压缩 js 代码就用 terser
2022/7/3 23:20:24
本文主要是介绍压缩 js 代码就用 terser,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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
时,有默认的配置,也可以自行定义处理规则。
以上就是 terser 和 TerserPlugin 的介绍, 更多有关 webpack
的内容可以参考我其它的博文,持续更新中~
这篇关于压缩 js 代码就用 terser的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南