esbuild 的快来自三件事:Go 原生多线程并行、无中间 AST 序列化(解析/转换/生成全程在内存中一条龙)、几乎不做昂贵的类型检查(只转译 TS 类型语法,不校验类型正确性)。同样的项目,webpack 要几十秒,esbuild 常常零点几秒就完成。对中大项目而言,依赖预构建从十几秒压到毫秒级,正是 Vite 开发服务器秒开的底气所在。
它现在是 Vite 的开发期依赖预构建引擎,也被 Storybook、Turbopack 生态等借力。局限是插件生态远不如 webpack/Rollup 丰富,一些深度定制(特殊静态资源处理、复杂代码拆分策略)能力有限,因此多是作为底层引擎被组合使用,而非直接替代全套工具链。如果项目高度依赖自定义插件链,目前仍建议以 Vite 或 Rollup 为主,把 esbuild 当作加速器而非替代品。
// 用 esbuild 直接打包一个 TS 文件 const esbuild = require('esbuild'); esbuild.build({ entryPoints: ['src/index.tsx'], // 入口(支持 jsx/tsx) bundle: true, // 打包依赖 minify: true, // 压缩 sourcemap: true, // 生成 sourcemap splitting: true, // 代码拆分 format: 'esm', outdir: 'dist', define: { 'process.env.NODE_ENV': '"production"' } }).then(() => console.log('done')); // 命令行也行:esbuild src/app.ts --bundle --minify --outfile=dist/app.js