跳到主要内容

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 倍