Webpack:F:\nochinese_path\React_code\webpack

mode: 'production' 与 TerserPlugin 的区别

1. mode: 'production'(模式设置)

设置 mode: 'production' 时,webpack 会自动启用多项生产优化,包括:

  • 代码压缩(默认使用 TerserPlugin)
  • Tree Shaking
  • 作用域提升(Scope Hoisting)
  • 移除未使用的代码
  • 优化模块 ID
  • 优化 chunk ID
  • 启用 optimization.minimize: true

2. TerserPlugin(压缩插件)

TerserPlugin 是用于压缩和混淆 JavaScript 的插件:

  • 压缩代码(移除空格、换行等)
  • 混淆变量名
  • 移除注释和死代码
  • 可自定义压缩选项

关键区别

当 mode: 'production' 时:

  • webpack 默认启用 TerserPlugin 进行压缩
  • 使用默认的压缩配置

手动配置 TerserPlugin 时:

  • 可以自定义压缩选项(如保留注释、自定义压缩级别等)
  • 可以替换为其他压缩工具(如 esbuild)
  • 可以禁用压缩(设置 minimize: false)
javascript 复制代码
  optimization: {
    minimize: true,
    minimizer: [new TerserPlugin()]
  }

由于已设置 mode: 'production',这里的 TerserPlugin 配置是冗余的。webpack 会自动使用 TerserPlugin。

如果需要自定义压缩选项,可以这样配置:

javascript 复制代码
optimization: {
  minimize: true,
  minimizer: [
    new TerserPlugin({
      terserOptions: {
        compress: {
          drop_console: true, // 移除 console
        },
        format: {
          comments: false, // 移除注释
        },
      },
    }),
  ],
}

总结:mode: 'production' 是全局优化设置,会自动启用 TerserPlugin;手动配置 TerserPlugin 主要用于自定义压缩行为。

MiniCssExtractPlugin

从JS中提取CSS,并在光盘文件夹中创建一个独立的文件,最后这个css.bundle.js会被通过htmlWebpackPlugin加在index.html

相关推荐
ZoeLandia7 小时前
React04:事件处理与受控表单
开发语言·前端·react.js·typescript
亿元程序员7 小时前
用AI做了一款微信小游戏,却发现上传不了
前端
Ai-_Man8 小时前
我需要批量导出Poe左边栏所有对话,而不是一条具体的对话内容,你们AI导出鸭可以吗?
开发语言·前端·javascript·人工智能·小程序
java1234_小锋8 小时前
【技术专题】HTML5 网页技术 - Web Storage 本地存储 & 文件 API & 拖放 API
前端·html·html5
恋猫de小郭8 小时前
Flutter 官方表示:AI 时代代码越来越容易写,为什么还要一套代码库?
android·前端·flutter
软件派8 小时前
Chrome 插件开发实战指南
前端·chrome
ly76898 小时前
性能剖析与压测方法论:JMH、async-profiler 与分层瓶颈定位的可复现实验
服务器·前端·数据库·压测·jmh·性能剖析·async-profiler
ZoeLandia8 小时前
React05:useEffect 与副作用
开发语言·前端·react.js·typescript
狮子座的男孩8 小时前
html+css基础:24、2D变换(位移/缩放/旋转/扭曲(了解)/多重变换/变换原点)
前端·css·经验分享·html·2d位移·原点变换·缩放/旋转/扭曲
weixin_417396838 小时前
酒店弱电怎么验收?四个阶段与逐项检查清单
开发语言·前端·php·综合布线·弱电