Webpack 5 超详细解读(六)

51.TerserPlugin 压缩 JS

webapck中提供了压缩 js 代码的方式,可以移除无用代码、替换变量名等,减少编译后文件体积,提升加载速度。

不同mode
在 webpack配置文件 webpack.config.js中通过将 mode设置为 development或者 production,会对代码进行不同的处理。

可以发现,production模式下编译的文件,文件及变量名被修改、空格换行被去除,即使自己没有进行配置,webpack 也会在我们设置 production的模式时默认添加一些属性,比如这里js代码压缩用到的就是 TerserPlugin

terser

TerserPlugin处理代码依赖的是 terser这个工具, terser 是可以直接安装并独立使用的,使用的时候有非常多的配置可以自行定义,具体可参考 官方文档

其中属于 compress options

arrows — 对象里的箭头函数函数体只有一句
arguments — arguments 参数进行转换
dead_code — 删除不可达的代码 (remove unreachable code)
以下属于 mangle options

toplevel — 顶层作用域要不要丑化
keep_classnames — 类名保留
keep_fnames — 保留函数名
通过 npm install terser安装依赖后,直接执行 terser 命令语句 npx terser ./src/index.js -o ./terser/default.js,这里没有进行配置,所以使用的是默认处理方式,只移除了换行。

自定义js代码的编译方式,npx terser ./src/index.js -o terser/index.min.js -c arguments,arrows=true -m toplevel,keep_classnames,keep_fnames

以上配置表示

函数中使用到 arguments 时,转成形参
箭头函数体只有一句时,去除 return
丑化顶层作用域的变量,比如将变量名 message 变为 o
保留类名
保留函数名
可以看到,编译后的代码去除了空格和换行,以及一些其它指定的处理

为了更方便阅读,将编译后的代码格式化

TerserPlugin
在项目中,有很多 js 文件需要进行压缩处理,自己一个个命令去指定编译规则的方式会过于麻烦,通过 TerserPlugin 统一配置能够解决这个问题。

通过 npm install terser-webpack-plugin --save-dev安装依赖后,在 webpack.config.js文件中定义对应的配置,更多配置可参考 官方文档

const TerserPlugin = require('terser-webpack-plugin');

module.exports = {
  // 其它配置省略 
  mode: 'production',
  optimization: {
    minimize: true,
    minimizer: [
      new TerserPlugin({
        terserOptions: {
          compress: {
            arguments: true,
            dead_code: true,
          },
          toplevel: true,
          keep_classnames: true,
          keep_fnames: true,
        },
      }),
    ],
  },
};

编译后文件的js代码被压缩到了一行,格式化之后可以看到对应的处理

总结
terser是一个工具,有着压缩、转换处理 js 代码等功能,通过命令行可以直接对 js 文件进行编译。

但在项目中,直接使用 terser过于繁琐,所以借助 terser-webpack-plugin统一编译,当 mode为 production时,有默认的配置,也可以自行定义处理规则。

52.scope hoisting(2022.11.20待补充)

53.usedExports 配置(2022.11.20待补充)

54.sideEffects 配置(2022.11.20待补充)

55.Css-TreeShaking(2022.11.20待补充)

56.资源压缩(2022.11.20待补充)

57.inlineChunkHtmlPlugin 使用(2022.11.20待补充)

58.Webpack 打包 Library(2022.11.20待补充)

59.打包时间和内容分析(2022.11.20待补充)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将webpack更新到webpack5,你可以按照以下步骤进行操作: 1. 首先,确保你的项目已经安装了webpack4,并且项目中的webpack相关的依赖包已经经过优化。 2. 在开始升级之前,你需要了解webpack5的新特性和改动,以便确定是否会对你的项目产生影响。你可以查阅webpack5的官方文档,了解新版本的改进。 3. 接下来,你可以通过以下几个步骤来升级webpack: a. 首先,升级webpack的主要依赖包。你可以修改项目的package.json文件,将webpack相关的依赖包的版本号修改为webpack5对应的版本号。 b. 然后,运行npm install命令来安装新版本的依赖包。 c. 接下来,你需要根据你的项目需求和配置,逐步迁移你的webpack配置文件。由于webpack5引入了一些新的配置项和改动,你需要根据官方文档和你的项目需求,逐步修改和调整配置文件,以确保项目可以正常运行。 d. 最后,你可以运行项目,并进行测试和调试,以确保项目在升级到webpack5之后可以正常工作。 4. 在升级过程中,你可能会遇到一些兼容性问题或者其他异常情况。在这种情况下,你可以通过查阅webpack的官方文档、搜索相关的社区讨论或者咨询其他开发者的经验来解决问题。 总结起来,将webpack更新到webpack5的过程主要包括了解新版本的改进、升级依赖包、迁移配置文件和测试调试等步骤。希望这些步骤能帮助你成功地将webpack更新到webpack5,并实现项目的优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值