src/content/configuration/mode.mdx
Providing the mode configuration option tells webpack to use its built-in optimizations accordingly.
string = 'production': 'none' | 'development' | 'production'
Provide the mode option in the config:
export default {
mode: "development",
};
or pass it as a CLI argument:
webpack --mode=development
The following string values are supported:
| Option | Description |
|---|---|
development | Sets process.env.NODE_ENV on DefinePlugin to value development. Enables useful names for modules and chunks. |
production | Sets process.env.NODE_ENV on DefinePlugin to value production. Enables deterministic mangled names for modules and chunks, FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin and TerserPlugin. |
none | Opts out of any default optimization options |
If not set, webpack sets production as the default value for mode.
T> If mode is not provided via configuration or CLI, CLI will use any valid NODE_ENV value for mode.
// webpack.development.config.js
export default {
mode: "development",
};
// webpack.production.config.js
export default {
mode: "production",
};
// webpack.custom.config.js
export default {
mode: "none",
};
If you want to change the behavior according to the mode variable inside the webpack.config.js, you have to export a function instead of an object:
const config = {
entry: "./app.js",
// ...
};
export default (env, argv) => {
if (argv.mode === "development") {
config.devtool = "source-map";
}
if (argv.mode === "production") {
// ...
}
return config;
};