🐙
esbuild でビルドするときのスクリプト
最近ライブラリをビルドするときはもっぱら esbuild を使っている。
esbuild を使うときには大体 ./scripts/build.mjs
みたいなのを用意している。この記事では、自分が使っているビルドスクリプトの雛形を紹介する。
Stage 3 の Import Assertions と JSON modules を使って package.json
を取得するので、Node.js v17 系が必要になる。
環境変数 WATCH
に true
を渡しておくとウォッチモードになる。
各種設定は用途に合わせてお好みで。
import { build } from "esbuild";
import pkg from "../package.json" assert { type: "json" };
const dependencies = Object.keys(pkg.dependencies ?? {});
const peerDependencies = Object.keys(pkg.peerDependencies ?? {});
const external = [...dependencies, ...peerDependencies];
/** @type {import('esbuild').BuildOptions} */
const options = {
entryPoints: ["./src/index.ts"],
minify: true,
bundle: true,
outfile: "./dist/index.js",
target: "node14.11",
platform: "node",
format: "cjs",
external,
};
if (process.env.WATCH === "true") {
options.watch = {
onRebuild(error, result) {
if (error) {
console.error("watch build failed:", error);
} else {
console.log("watch build succeeded:", result);
}
},
};
}
build(options).catch((err) => {
process.stderr.write(err.stderr);
process.exit(1);
});
Discussion