2017-03-24 48 views
30

在一些的WebPack實例中,你看到提到的 「規則」 陣列:Webpack中的規則vs裝載器 - 有什麼區別?

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

有什麼區別?應該使用哪個?

+6

https://webpack.js.org/guides/migrating/#module-loaders-is-now-module-rules – Ivan

回答

45

裝載機用於Webpack 1和Webpack 2中的規則。他們說,未來的「裝載機」將不推薦使用module.rules。

請在官方Webpack網站查看Migrating Versions

module.loaders現在module.rules

舊裝載機構型由更強大的規則 系統,它允許裝載機和更多的配置所取代。對於 兼容性原因,舊的module.loaders語法仍然有效 並且舊名稱被解析。新的命名約定更容易理解,並且是將配置升級到使用module.rules的一個很好的理由。

+0

任何官方的參考? –

+1

https://webpack.js.org/guides/migrating/#module-loaders-is-now-module-rules –

+0

當我添加了babel集成時,我已經從一個示例中使用了loaders部分,但沒有關注這方面,但我的項目使用規則,這是在裝載機部分之後進行的。我花了幾個小時調查爲什麼巴貝爾不工作!因爲規則只是默默地覆蓋裝載機部分:( –

相關問題