全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-23 7 分钟 ✍️ juanwangdev

esbuild 鐐構優化

esbuild 是 Vite 预构建的核心,提供极速的编译能力。

esbuild 特点

特点说明
Go 编写原生二进制,速度快
并行处理多核并行编译
内存高效不生成中间 AST
功能简单只做转译,不做分析

预构建流程

JavaScript
扫描依赖 → esbuild 编译 → 输出到 .vite/deps → 缓存元数据

速度对比

工具编译 100KB编译 1MB
Babel1-2 秒10+ 秒
TypeScript0.5-1 秒5+ 秒
esbuild10 毫秒100 毫秒

注意:esbuild 比 JavaScript 工具快 10-100 倍。

预构建输出

JavaScript
// CJS 依赖转换为 ESM
// lodash (CJS)
module.exports = { debounce }

// 预构建后 (ESM)
export { debounce }
export default { debounce }

esbuild 限制

功能esbuildBabel/TS
类型检查
emitDecoratorMetadata
自定义插件有限

预构建配置

JavaScript
export default defineConfig({
  optimizeDeps: {
    esbuildOptions: {
      target: 'es2020',
      define: {
        'process.env.NODE_ENV': '"development"'
      }
    }
  }
})

小依赖合并

esbuild 将多个小依赖合并为单个 chunk:

JavaScript
// 多个小依赖
import a from 'lib-a'  // 5KB
import b from 'lib-b'  // 3KB

// 合并为单个 chunk
// deps/lib-a_lib-b.js (~8KB)

合并减少 HTTP 请求数量,提升加载效率。

性能优化技巧

text
export default defineConfig({
  optimizeDeps: {
    // 明确声明依赖,避免自动扫描
    include: ['vue', 'axios'],
    // 排除不需要预构建的依赖
    exclude: ['my-local-lib']
  }
})

要点总结

  • esbuild 用 Go 编写,速度极快
  • 预构建将 CJS/UMD 转为 ESM
  • 小依赖合并减少请求
  • 功能有限,不做类型检查

📝 发现内容有误?点击此处直接编辑

← 上一篇 Rollup 生产构建原理
下一篇 → 模块图与依赖分析
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库