概念定义
Esbuild 是用 Go 编写的、面向 JavaScript 与 TypeScript 的打包器、转译器与压缩器,以速度为目标。它在单遍中解析、转换并链接,利用 Go 并发,并采用避免重复 AST 转换的设计。它提供 CLI 与 JavaScript API,支持 tree shaking 与代码分割,且常作为其他工具的快速内核被嵌入;不过它对高级语言特性的转换覆盖比基于 Babel 的较慢流水线更窄。
为什么重要
构建时间塑造开发者反馈与 CI 成本。以往耗时数十秒的流水线可以降到一小部分,使快速迭代与频繁集成变得现实。同一引擎可跨工具使用,也减少了构建中缓慢阶段的数量;其小巧的体积使它成为那些以往自建流水线的框架的自然打包内核。
工程实践
与独立的类型检查器配合,因为转译会抹掉类型而不做校验。把包标记为无副作用,使 tree shaking 能丢弃不可达代码,并定期审计产物——速度并不能阻止一个大依赖被发布出去。固定 esbuild 版本以获得可复现输出;当项目需要 esbuild 尚未覆盖的高级转换时,隔离该步骤,而不是替换掉整条快速流水线。