Webpack 2正则表达式测试失败

时间:2017-06-06 07:44:58

标签: javascript regex webpack css-modules

我无法理解我的装载机测试失败的原因。

我的目标:

测试1:

匹配的任何内容global.cssglobal.scss

测试2

匹配global.scssglobal.css

原因是我不希望任何名为global的文件通过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 个答案:

答案 0 :(得分:0)

对于测试2,请尝试从正则表达式中删除^。测试与文件路径匹配,而不仅仅是文件名,因此从路径的开头开始将导致测试失败。

对于测试1,您可以使用test: \/.s?css$\捕获所有样式然后添加exclude: \global.s?css$\来简化此负面模式,以防止包含全局。