esbuild 比webpack 快10倍
最后更新于:2022-04-02 03:41:33
[TOC]
> [esbuild.github.io](https://esbuild.github.io/getting-started/#download-a-build)
## 概述
注意,如果使用vue, 可直接使用 vite 进行构建,因为vite 就是以 esbuild 为基础的
快的原因
* 它是用 Go 语言编写的,该语言可以编译为原生代码;
* 解析,打印和源映射生成全部完全并行化;
* 无需昂贵的数据转换,只需很少的几步即可完成所有操作;
* 编写代码时处处注意速度表现,并尽量避免不必要的配置
支持类型
* CommonJS 模块
* ES6 模块
* 使用’–bundle’与 ES6 模块的静态绑定打包
* 使用’–minify’完全压缩(空格、标识符和修饰符)
* 启用’–sourcemap’时,完全支持源映射
* .jsx 文件的 JSX 到 JavaScript 转换
* 通过’–define’进行编译时标识符替换
* 使用 package.json 中的’browser’字段进行路径替换
* 自动检测 tsconfig.json 中的’baseUrl’
## 安装
1. 如果你已安装 Go 语言工具链,可以使用’make’生成可执行文件
2. npm 安装
```
npm install -g esbuild-linux-64 # for Linux
npm install -g esbuild-darwin-64 # for macOS
npm install -g esbuild-windows-64 # for Windows
npm install -g esbuild-wasm # for all other platforms
```
## 语法
```
Usage:
esbuild [options] [entry points]
Options:
--name=... 模块名称
--bundle 将所以依赖项打包进输出文件
--outfile=... 输出文件 (用于一个入口点)
--outdir=... 输出目录 (用于多个入口点)
--sourcemap 发出一个源映射
--error-limit=... 最大错误计数,0 是禁用 (默认值为 10)
--target=... 语言目标 (默认 esnext)
--minify 设置所有 --minify-* flags
--minify-whitespace 移除空格
--minify-identifiers 缩短标识符
--minify-syntax 使用较短的等效语法
--define:K=V 解析时用 V 替换 K
--jsx-factory=... 用来替换 React.createElement 的内容
--jsx-fragment=... 用来替换 React.Fragment 的内容
--trace=... 在这个文件中写入一个 CPU trace
--cpuprofile=... 在这个文件中写入一个 CPU profile
Example:
# Produces dist/entry_point.js and dist/entry_point.js.map
esbuild --bundle entry_point.js --outdir=dist --minify --sourc
```
## 场景
### 开发与生产
开发
```
esbuild example.jsx --bundle '--define:process.env.NODE_ENV="development"' --outfile=out.js
```
生产
```
esbuild example.jsx --bundle '--define:process.env.NODE_ENV="production"' --minify --outfile=out.js
```
';