我正在将我当前的项目升级到Webpack2,之前它正在使用Webpack1.我已经看了几个关于升级的教程,总的来说,我明白了.
但是,我一直遇到的问题是,我不确定何时在指定模块规则(加载器)时使用'use'和'loader'.起初,我想use
更换了loader
.我理解这种语法:
module: { rules: [{ test: /\.scss$/, use: [ { loader: 'postcss-loader', options: { plugins: ... } }, 'sass-loader' ] }] }
然而,当我使用ExtractTextPlugin
它时它似乎并不喜欢当它被认为是一个use
.我试过这个:
{ test: /\.scss$/, use: [ { loader: ExtractTextPlugin.extract({ fallbackLoader: 'style-loader', loader: scssLoaders }) }] },
与scssLoaders
存在:
var scssLoaders = [ { loader: 'css-loader', options: { modules: true, importLoaders: '2', localIdentName: '[name]__[local]__[hash:base64:5]' } }, { loader: 'postcss-loader' }, { loader: 'sass-loader', options: { outputStyle: 'expanded', sourceMap: true, sourceMapContents: true } } ];
在我解决其他问题之前,我会停在这里.有人可以帮忙解释一下我在这里缺少什么吗?随意询问您需要帮助的任何其他代码!
先感谢您.
正如Webpack 2迁移教程所述,两者之间的区别在于,如果我们想要一个加载器数组,我们必须使用use
,如果它只是一个加载器,那么我们必须使用loader
:
module: { rules: [ { test: /\.jsx$/, loader: "babel-loader", // Do not use "use" here options: { // ... } }, { test: /\.less$/, loader: "style-loader!css-loader!less-loader" use: [ "style-loader", "css-loader", "less-loader" ] } ] }
module.rules
适用于装载机.将规则指定loader
为只是一个快捷方式
use: [{loader}]
对于插件,请使用plugins
配置中的属性.