esbuild
Go製/icons/javascript.icon//icons/typescript.icon//emoji/jsx.icon/etc. bundler wasm化されているので、web browserからも使用できる e.g.
ん?bsahd.icon
早い理由
更新頻度がすさまじい
読み応えがある
新機能や破壊的変更はこれを読めばほぼ把握できる
code:build.ts
import esbuild from 'esbuild';
await esbuild.build({
// logLevel: 'info', // ビルド時のログを出したいときは設定する
entryPoints: './src/main.ts', // トランスパイル対象のコード。今回はbundleするのでimportしているライブラリと自作モジュールも自動で含まれる outdir: './dist', // トランスパイル結果のファイルの格納先
outExtension: { // 必須では無いが、ESM形式で出力されることを明示的にするため拡張子を.mjsにしている
'.js': '.mjs'
},
minify: true, // 必須では無いが、ファイルサイズ削減のため
bundle: true,
platform: 'node', // ブラウザ上などではなく、サーバーサイドのnodejsで実行するため
// tsconfig: './tsconfig.json', // デフォルトでtsconfig.jsonを使うが、ビルド時に設定を変える場合は指定する
format: 'esm', // ESMプロジェクトなので、出力フォーマットを'esm'に設定する必要
banner: { // commonjs用ライブラリをESMプロジェクトでbundleする際に生じることのある問題への対策
js: 'import { createRequire as topLevelCreateRequire } from "module"; import url from "url"; const require = topLevelCreateRequire(import.meta.url); const __filename = url.fileURLToPath(import.meta.url); const __dirname = url.fileURLToPath(new URL(".", import.meta.url));',
},
})