2017-06-06 2 views
0

Ich kann nicht richtig verstehen, warum meine Loader-Tests fehlschlagen.Webpack 2 Regex-Test fehlgeschlagen

Mein Ziel:

Test 1:

Spiel alles, was nicht entweder global.css oder global.scss

Test 2

Nur Spiel ist entweder global.scss oder global.css


Grund dafür ist, ich will nicht alle Dateien mit dem Namen global obwohl

Scheint, wie mein erster Test wird weltweit im Stich gelassen durch die module Optionen übergeben werden. Ich kann sehen, dass beide Regex richtig/falsch zurückgegeben werden, wenn Sie Tools wie https://regex101.com/ verwenden.

Könnte dies auf meine include sein?

Hilfe! :)

webpack.config.js

 { 

      test: /^(?!global\.s?css$).*\.s?css$/, 
      include: SRC_DIR, 
      use: extractPlugin.extract({ 
       use: [ 
        { 
         loader: 'css-loader', 
         options: { 
          modules: true, 
          camelCase: true 
         } 
        }, 
        { 
         loader: 'postcss-loader', 
         options: { 
          plugins: (loader) => [require('autoprefixer')()] 
         } 
        }, 
        'resolve-url-loader', 
        { 
         loader: 'sass-loader', 
         options: { sourceMap: true } 
        } 
       ] 
      }) 
     }, 

     { 

      test: /^global\.s?css$/, 
      include: SRC_DIR, 
      use: extractPlugin.extract({ 
       use: [ 
        'css-loader', 
        { 
         loader: 'postcss-loader', 
         options: { 
          plugins: (loader) => [require('autoprefixer')()] 
         } 
        }, 
        'resolve-url-loader', 
        { 
         loader: 'sass-loader', 
         options: { sourceMap: true } 
        } 
       ] 
      }) 
     } 
+1

Tests erwarten, dass der gesamte Pfad der Datei übereinstimmt, wie 'pfad/zu/global.scss', nicht nur 'global.scss'. – crossjs

+0

Wenn das der Fall ist, warum dann 'test:/\. (Css | scss) $ /' arbeiten? – Samuel

Antwort

0

Für Test 2 versuchen, die ^ von Ihrem regex fallen zu lassen. Die Tests werden mit dem Dateipfad abgeglichen, nicht nur mit dem Dateinamen. Wenn der Pfad vom Anfang des Pfads an beginnt, wird er daher fehlschlagen.

Für Test 1 können Sie dieses negative Muster vereinfachen, indem Sie test: \/.s?css$\ verwenden, um alle Stile zu erfassen, und dann exclude: \global.s?css$\ hinzufügen, um zu verhindern, dass global eingeschlossen wird.

+0

Danke! perfekt. – Samuel