天天看點

webpack中的模式(mode)

模式(mode)

提供 mode 配置選項,告知 webpack 使用相應模式的内置優化。

用法

隻在配置中提供 mode 選項:

module.exports = {
  mode: 'production'
};           

複制

或者從 CLI 參數中傳遞:

webpack --mode=production           

複制

支援以下字元串值:

1.development

會将 process.env.NODE_ENV 的值設為 development。啟用 NamedChunksPlugin 和 NamedModulesPlugin。

// webpack.development.config.js
module.exports = {
+ mode: 'development'
- plugins: [
-   new webpack.NamedModulesPlugin(),
-   new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("development") }),
- ]
}           

複制

2.production

會将 process.env.NODE_ENV 的值設為 production。啟用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin.

// webpack.production.config.js
module.exports = {
+  mode: 'production',
-  plugins: [
-    new UglifyJsPlugin(/* ... */),
-    new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("production") }),
-    new webpack.optimize.ModuleConcatenationPlugin(),
-    new webpack.NoEmitOnErrorsPlugin()
-  ]
}           

複制

production模式下會啟用UglifyJsPlugin插件(移除未使用的内容和檔案壓縮),分别用production和development打包,編譯的差別:

1.development打包後,一些沒有依賴的方法 變量 檔案會保留,production則會移除。

2.production打包後,代碼會進行壓縮,比development的檔案小。