import esbuild from "esbuild"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; import { nodeExternalsPlugin } from "esbuild-node-externals"; // import { glob } from "glob"; // import path from "path"; const banner = ` // patch __dirname // import { fileURLToPath } from "url"; // import path from "path"; // const __filename = fileURLToPath(import.meta.url); // const __dirname = path.dirname(__filename); // allow top level await import { createRequire as topLevelCreateRequire } from "module"; const require = topLevelCreateRequire(import.meta.url); `; const argv = yargs(hideBin(process.argv)) .usage("Usage: $0 -entry [string] -out [string]") .option("entry", { alias: "e", describe: "Entry point file", type: "string", demandOption: true, }) .option("out", { alias: "o", describe: "Output file path", type: "string", demandOption: true, }) .help() .alias("help", "h").argv; // generate a list of all package.json files in the monorepo function getPackagePaths() { // const packagePaths = []; // const packageGlob = "package.json"; // const packageJsonFiles = glob.sync(packageGlob); // for (const packageJsonFile of packageJsonFiles) { // packagePaths.push(path.dirname(packageJsonFile) + "/package.json"); // } // return packagePaths; return ["package.json"]; } esbuild .build({ entryPoints: [argv.entry], bundle: true, outfile: argv.out, format: "esm", banner: { js: banner, }, platform: "node", external: ["body-parser"], plugins: [ nodeExternalsPlugin({ packagePath: getPackagePaths(), }), ], sourcemap: true, target: "node20", }) .then(() => { console.log("Build completed successfully"); }) .catch((error) => { console.error("Build failed:", error); process.exit(1); });