Webpack 中的规则与加载器 - 有什么区别?

2024-01-07

在一些 Webpack 示例中,您会看到对“rules”数组的引用:

module.exports = {
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          //resolve-url-loader may be chained before sass-loader if necessary
          use: ['css-loader', 'sass-loader']
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin('style.css')
    //if you want to pass in options, you can do so:
    //new ExtractTextPlugin({
    //  filename: 'style.css'
    //})
  ]
}

(https://github.com/webpack-contrib/extract-text-webpack-plugin https://github.com/webpack-contrib/extract-text-webpack-plugin)

在其他情况下,加载器数组:

var ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
    module: {
        loaders: [
            {
                test: /\.css$/,
                loader: ExtractTextPlugin.extract({
                    loader: "css-loader"
                })
            },
            { test: /\.png$/, loader: "file-loader" }
        ]
    },
    plugins: [
        new ExtractTextPlugin({
            filename: "style.css",
            allChunks: true
        })
    ]
};

(https://github.com/webpack/webpack/tree/master/examples/css-bundle https://github.com/webpack/webpack/tree/master/examples/css-bundle)

有什么不同?应该使用哪个?


Loaders用于Webpack 1
Rules用于 Webpack 2+

根据迁移文档 https://webpack.js.org/migrate/3/#moduleloaders-is-now-modulerules在 Webpack 官方网站上。

module.loaders is now module.rules

旧的加载器配置已被更强大的规则系统取代,该系统允许配置加载器等。出于兼容性原因,旧的module.loaders语法仍然有效并且旧名称被解析。新的命名约定更容易理解,并且是升级配置以使用module.rules.

德尔塔示例

  module: {
-   loaders: [
+   rules: [
      {
        test: /\.css$/,
-       loaders: [
-         "style-loader",
-         "css-loader?modules=true"
+       use: [
+         {
+           loader: "style-loader"
+         },
+         {
+           loader: "css-loader",
+           options: {
+             modules: true
+           }
+         }
        ]
      },
      {
        test: /\.jsx$/,
        loader: "babel-loader", // Do not use "use" here
        options: {
          // ...
        }
      }
    ]
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack 中的规则与加载器 - 有什么区别? 的相关文章

随机推荐