💨

esbuild でバンドルせずに各ファイルをトランスパイルだけする

2022/05/26に公開

するぞ

  • entryPoints にファイルのパス全部渡しておく
  • esbuild には glob パターンを展開する機能はないので自分でやりましょう
  • bundle オプションは true にしない
  • outdir を指定しとく
  • format とか platform とか target はお好みで
import { build } from "esbuild";
import { globbySync } from "globby";

const entryPoints = globbySync("./src/**/**.{ts,tsx}");

/** @type {import('esbuild').BuildOptions} */
const options = {
  entryPoints,
  minify: true,
  outdir: "./dist",
  target: "es2019",
  platform: "browser",
  format: "esm",
};

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