Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时使用';使用';和';装载机&x27;在Webpack 2 module.rules中?_Webpack_Webpack 2 - Fatal编程技术网

何时使用';使用';和';装载机&x27;在Webpack 2 module.rules中?

何时使用';使用';和';装载机&x27;在Webpack 2 module.rules中?,webpack,webpack-2,Webpack,Webpack 2,我正在将当前项目升级到Webpack2,之前它使用的是Webpack1。我已经阅读了一些关于升级的教程,总的来说,我是理解的 不过,我一直遇到的问题是,在指定模块规则(装入器)时,我不确定何时在中使用“use”和“loader”。起初,我认为使用替换了加载程序。我理解这种语法: module: { rules: [{ test: /\.scss$/, use: [ { loader: 'postcss-loader', option

我正在将当前项目升级到Webpack2,之前它使用的是Webpack1。我已经阅读了一些关于升级的教程,总的来说,我是理解的

不过,我一直遇到的问题是,在指定模块规则(装入器)时,我不确定何时在中使用“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
    }
  }
];
在我开始讨论其他问题之前,我就到此为止。有人能帮我解释一下我遗漏了什么吗?请随意询问您需要帮助的任何其他代码

提前谢谢。

是为装载机准备的。将规则指定为只是

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"
        ]
      }
    ]
  }

注意:使用
加载器
而不是
加载器
仍然可以工作,但现在被认为是一个遗留选项非常好的答案,谢谢。当一个因其复杂配置而受到批评的工具决定让您使用两个属性(而您过去只能使用其中一个属性)从而使配置变得更加困难时,您一定会喜欢它:(