为什么使用 esbuild

  • 快:比 rollup + terser 快一百倍
  • ts-node 需要为了开发环境单独配置,不能和构建使用相同配置,冗余了。而且不好配
  • vite 多出了很多用不到的功能

思路

  1. 开发环境直接使用构建版本,配合指定开发环境变量完成:使用 esbuild 脚本完成构建
  2. 自动重启:使用 nodemon 监控文件变化,指定 exec 脚本,重新构建和运行

如何使用

使用 esbuild js api 配置构建流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// esbuild.config.mjs
import esbuild from "esbuild"
import { esbuildPluginNodeExternals } from "esbuild-plugin-node-externals"
;(async () => {
await esbuild
.build({
entryPoints: ["./src/index.ts"],
bundle: true,
platform: "node",
target: "node12",
outfile: "dist/index.js",
plugins: [esbuildPluginNodeExternals()],
})
.then(() => process.exit(0))
})()

使用 nodemon 实现文件修改后自动构建并运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// package.json
{
"scripts": {
"start": "node ./dist/index.js",
"dev": "nodemon ./dist/index.js",
"build": "rimraf dist && node ./scripts/build.mjs"
},
}

// nodemon.json
{
"exec": "pnpm run build && pnpm run start",
"watch": ["./src"],
"ext": "ts",
"env": {
"NODE_ENV": "development"
}
}