mode 模式

Mode

🎉 Webpack4+ 支持该配置

作用: 省去一些不必要的配置(如何要实现精细化的控制,还是需要自定义配置文件)

开发模式

配置示例:

module.exports = {
mode: 'development',
};

功能:

  • 自动设置 process.env.NODE_ENV = development
  • 启用 NamedChunksPlugin 和 NamedModulesPlugin 为所有的模块(源文件)和块(构建输出的文件)定义一个名字

说明:

  • 方便于浏览器调试的工具;
  • 可以快速地对增加的内容进行编译;
  • 提供了更精确、更有用的运行时错误提示机制

生产模式

配置示例:

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

说明:

  • 自动压缩构建输出的文件
  • 快速的运行时处理
  • 不暴露源代码和源文件的路径
  • 快速的静态资源输出

功能:

  • 自动设置 process.env.NDOE_ENV
  • 启用插件(最后一个为非内置插件)
    • FlagDependencyUsagePlugin:检测并标记模块之间的从属关系
    • FlagIncludeChunksPlugin:可以让 Webpack 根据模块间的关系依赖图中,将所有的模块连接成一个模块
    • ModuleConcatenationPlugin:告诉 Webapck 去清除一个大的模块文件中的未使用的代码,这个大的文件模块可以是自定义的,也可以是第三方的(注意:一定要 package.json 文件中添加 "sideEffects": false
    • NoEmitOnErrorsPlugin
    • OccurrenceOrderPlugin
    • SideEffectsFlagPlugin:告知 Webapck 各个模块间的先后顺序,这样可以实现最优的构建输出
    • TerserPlugin:替代 uglifyjs-webpack-plugin 插件。它的作用依然是对构建输出的代码进行压缩

不做任何优化

module.exports = {
mode: 'none',
};

表示启动 Webpack 打包时关闭默认的内置插件。