Fix addon and dist builds after path mapping removal

Import shared core from ../../../out/common|browser in addons so tsc
and runtime agree. Enable preserveConstEnums so const enums remain in
compiled out/ for addon consumers.

Build xterm esbuild before addons so out-esbuild exists for parallel
addon jobs. Verified: npm run setup, esbuild-demo-client, package.

Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com>
This commit is contained in:
Cursor Agent
2026-05-28 01:08:32 +00:00
co-authored by Daniel Imms
parent 9a96b27566
commit 584954b4fb
38 changed files with 139 additions and 127 deletions
+15 -4
View File
@@ -7,19 +7,30 @@ import { argv } from "process";
/** @type {{cp: import("child_process").ChildProcessByStdio<any, any, any>, name: string}[]} */
const jobs = [];
// Core job
jobs.push(createJob('xterm', []));
// Core job must finish before addons (addon tests resolve src/* via out-esbuild).
const xtermJob = createJob('xterm', []);
const xtermCode = await new Promise(r => {
xtermJob.cp.on('exit', code => {
log(`Finished \x1b[32m${xtermJob.name}\x1b[0m${code ? ' \x1b[31mwith errors\x1b[0m' : ''}`);
r(code ?? 1);
});
});
if (xtermCode !== 0) {
process.exit(xtermCode);
}
// Addon jobs
const addons = (await readdir('addons')).filter(e => e.startsWith('addon-')).map(e => e.replace('addon-', ''));
/** @type {{cp: import("child_process").ChildProcessByStdio<any, any, any>, name: string}[]} */
const addonJobs = [];
for (const addon of addons) {
jobs.push(createJob(`xterm-addon-${addon}`, [`--addon=${addon}`]));
addonJobs.push(createJob(`xterm-addon-${addon}`, [`--addon=${addon}`]));
}
// Demo job - This requires the others to be built so it's not included when building all
// jobs.push(createJob('demo-client', [`--demo-client`]));
await Promise.all(jobs.map((job, i) => {
await Promise.all(addonJobs.map(job => {
return new Promise(r => {
job.cp.on('exit', code => {
log(`Finished \x1b[32m${job.name}\x1b[0m${code ? ' \x1b[31mwith errors\x1b[0m' : ''}`);