Skip to content

Minifier

JavaScript 压缩能明显减少下发体积、加快页面加载,对网站优化至关重要; 对电商等业务而言,秒的差距往往对应巨大的经济价值。

传统压缩器往往在「压缩质量」与「速度」之间权衡:要么很慢换最好压缩,要么快但压缩差一点。 若在不牺牲压缩比的前提下再大幅提速会如何?

目标

我们正在积极开发原型,把 google-closure-compilerterseresbuildtdewolff-minify 等知名压缩器的测试用例悉数移植进来。

初步结果证明我们仍在既定轨道上: 使用 Oxc minifier,可在不明显牺牲压缩质量的情况下显著缩短压缩时间。

目标性能

  • 速度:快于 Terser,能与 esbuild 竞争
  • 压缩率:达到或优于 Terser
  • 正确性:通过主流压缩器的主流测试套件

架构概览

设计原则

  1. 语义感知:用语义分析驱动安全优化
  2. 增量友好:适配增量编译工作流
  3. 可配置:支持多级优化与目标设定
  4. 正确优先:激进优化让步于语义正确

当前状态

已实现特性

  • 死代码消除
  • 常量折叠
  • Tree Shaking(基础——移除未使用的导出)
  • 变量合并
  • 语句合并
  • 名称混淆
  • 控制流优化
  • 函数内联
  • 进阶 Tree Shaking(跨模块)

性能策略

  1. 减少 AST 趟数:在多趟优化合并为少数几次遍历
  2. 高效数据结构:arena、紧凑布局
  3. 早终止:没有收益即可跳过

资源

文档

外部参考

在线游乐场