const { execSync } = require("child_process") const esbuild = require("esbuild") const watch = process.argv.includes("--watch") /** * @type {import('esbuild').Plugin} */ const esbuildProblemMatcherPlugin = { name: "esbuild-problem-matcher", setup(build) { build.onStart(() => { console.log("[watch] build started") }) build.onEnd((result) => { result.errors.forEach(({ text, location }) => { console.error(`✘ [ERROR] ${text}`) console.error(` ${location.file}:${location.line}:${location.column}:`) }) console.log("[watch] build finished") }) }, } const srcConfig = { bundle: true, minify: false, sourcemap: true, sourcesContent: true, logLevel: "silent", entryPoints: ["src/packages/**/*.ts"], outdir: "out/packages", format: "cjs", platform: "node", define: { "process.env.IS_DEV": "true", "process.env.IS_TEST": "true", }, external: ["vscode"], plugins: [esbuildProblemMatcherPlugin], } async function main() { const srcCtx = await esbuild.context(srcConfig) if (watch) { await srcCtx.watch() } else { await srcCtx.rebuild() await srcCtx.dispose() } } execSync("tsc -p ./tsconfig.test.json --outDir out", { encoding: "utf-8" }) main().catch((e) => { console.error(e) process.exit(1) })