vite minify压缩工具
vite是将 Esbuild 作为生产环境下默认的压缩工具的
-
传统的方式都是使用 Terser 这种 JS 开发的压缩器来实现,在 Webpack 或者 Rollup 中作为一个 Plugin 来完成代码打包后的压缩混淆的工作。但 Terser 其实很慢,主要有 2 个原因。
- 压缩这项工作涉及大量 AST 操作,并且在传统的构建流程中,AST 在各个工具之间无法共享,比如 Terser 就无法与 Babel 共享同一个 AST,造成了很多重复解析的过程。
- 压缩这种 CPU 密集型的工作,其性能远远比不上 Golang 这种原生语言。
-
Esbuild 中从头到尾尽可能地复用一份 AST 节点数据,从而大大提高了内存的利用效率,提升编译性能
ESbuild vs Terser
-
体积大小:
- 虽然
Terser相对较慢,但大多数情况下构建后的文件体积更小
- 虽然
-
配置选项:
- esbuild配置相对简单,对于比较细的操作,无法颗粒度配置
- Terser可以颗粒度的配置,如去除console.log。但是保留console.error 【pure_funcs 配置项】
-
构建速度:
- Esbuild构建速度,它比 terser 快很多,大概 20-40 倍