Подтвердить что ты не робот

Правила vs Loaders в Webpack - Какая разница?

В некоторых примерах 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)

А в другом - массив загрузчиков:

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)

В чем разница? Что следует использовать?

4b9b3361

Ответ 1

Погрузчики используются в Webpack 1 и Rules в Webpack 2. Они говорят, что "Loaders" в будущем будут устаревать в пользу module.rules.

См. Миграция версий на официальном веб-сайте.

module.loaders теперь является module.rules

Старая конфигурация загрузчика была заменена более мощными правилами системы, которая позволяет конфигурировать загрузчики и многое другое. Для совместимость, старый синтаксис module.loaders все еще действителен и старые имена анализируются. Новые соглашения об именах проще понимать и являются хорошей причиной для обновления конфигурации до использования module.rules.