如何使用另一个“子串”的测试?

时间:2016-08-11 21:55:05

标签: webpack

我想做这样的事情:

    module: {
        loaders: [{
            test: /\.scss$/,
            loader: "style!css!autoprefixer!sass"
        }, {
            test: /\.raw.scss$/,
            loader: "css!autoprefixer!sass"
        }

在上下文中:

module.exports = {
    entry: path.join(srcPath, "app/core/bootstrap.ts"),
    output: {
        path: wwwPath,
        filename: "app-[hash:6].js"
    },
    module: {
        loaders: [{
            test: /\.scss$/,
            loader: "style!css!autoprefixer!sass"
        }, {
            test: /\.raw.scss$/,
            loader: "css!autoprefixer!sass"
        }, ...
]
    },
    resolve: {
        extensions: ["", ".js", ".json", ".scss", ".raw.scss", ".html", ".ts"],
        root: [
            srcPath,
            path.join(__dirname, "node_modules")
        ],
        moduleDirectories: [...]
    },
    plugins: [...]
};

请注意,对于匹配.raw.scss的文件,将运行两个加载程序集,因为*.raw.scss也与.scss测试匹配。

实施这样的事情的正确方法是什么?我必须做一些粗略的事情,比如改变第一个.scss测试,还要包含一个负面的lookbehind(在.raw之前不匹配包含.scss的任何内容)?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用exclude? (Docs

module: {
    loaders: [{
        test: /\.scss$/,
        exclude: /\.raw.scss$/,
        loader: "style!css!autoprefixer!sass"
    }, {
        test: /\.raw.scss$/,
        loader: "css!autoprefixer!sass"
    }]
}

答案 1 :(得分:-1)

如果更改顺序会发生什么,以便raw.scss首先出现?