2017-06-06 59 views
0

我無法完全理解爲什麼我的加載程序測試失敗。Webpack 2正則表達式測試失敗

我的目標:

測試1:

匹配任何是要麼global.cssglobal.scss

測試2

只有比賽要麼global.scssglobal.css


原因是是,我不想叫全球任何文件通過module選項

傳遞好像我的第一個測試是讓全球雖然。當使用諸如https://regex101.com/之類的工具時,我可以看到我的正則表達式正確返回true/false。

這可能是我的include

幫助! :)

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

測試2試着從你的正則表達式掉落^。測試與文件路徑相匹配,而不僅僅是文件名,所以從路徑的開始處開始測試會導致測試失敗。

對於測試1,您可以使用test: \/.s?css$\來捕獲所有樣式,然後添加exclude: \global.s?css$\來簡化此消極模式,以防止包含全局。

+0

謝謝!完善。 – Samuel