2017-06-06 4 views
0

私のローダーテストが失敗している理由を知ることはできません。Webpack 2の正規表現テストに失敗しました

私の目標:

テスト1:ないglobal.cssglobal.scss

テスト2

のみ試合のいずれかのいずれかである

マッチ何もまたはglobal.css


理由ビーイングは、私の最初のテストはしかしグローバルせているように思える私は地球という名前のファイルがmoduleオプション

を通過することにしたくないです。 https://regex101.com/のようなツールを使用すると、正規表現がtrue/falseを正しく返していることがわかります。

これは私のincludeになる可能性がありますか?

ヘルプ!あなたの正規表現から^をドロップテスト2試みのために:)

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

テストでは、 'path/to/global.scss'のようにファイルのパス全体が 'global.scss'だけでなく一致することが期待されます。 – crossjs

+0

その場合、 'test:/ \。(css | scss)$ /'はなぜ機能しますか? – Samuel

答えて

0

。テストはファイル名だけでなく、ファイルパスと照合されるため、パスの先頭から開始すると失敗する可能性があります。

テスト1では、test: \/.s?css$\を使用してすべてのスタイルをキャプチャし、exclude: \global.s?css$\を追加してグローバルが含まれないようにすることで、このネガティブパターンを簡素化できます。

+0

ありがとう!完璧。 – Samuel

関連する問題