From 5ee876041858136fab972eaff1aaefdc2c2f6d3d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 00:31:02 +0000 Subject: [PATCH 1/7] Initial plan From 3c2b91143960a202e2410bff557e4eab7bd5c255 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 16 Jan 2026 00:40:40 +0000 Subject: [PATCH 2/7] Set up code splitting for ESM build Co-authored-by: Tyriar <2193314+Tyriar@users.noreply.github.com> --- bin/esbuild.mjs | 21 ++++++++++++++++----- demo/index.html | 2 +- demo/test.html | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/bin/esbuild.mjs b/bin/esbuild.mjs index 5e0a370cad..c40b85fe60 100644 --- a/bin/esbuild.mjs +++ b/bin/esbuild.mjs @@ -26,7 +26,10 @@ const commonOptions = { target: 'es2021', sourcemap: true, treeShaking: true, + splitting: true, + chunkNames: 'chunks/[name]-[hash]', logLevel: 'warning', + outExtension: { '.js': '.mjs' }, }; /** @type {esbuild.BuildOptions} */ @@ -103,7 +106,8 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`addons/addon-${config.addon}/src/${getAddonEntryPoint(config.addon)}.ts`], - outfile: `addons/addon-${config.addon}/lib/addon-${config.addon}.mjs`, + outdir: `addons/addon-${config.addon}/lib`, + entryNames: `addon-${config.addon}`, }; outConfig = { ...outConfig, @@ -128,11 +132,12 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`demo/client/client.ts`], - outfile: 'demo/dist/client-bundle.js', + outdir: 'demo/dist', + entryNames: 'client-bundle', external: ['util', 'os', 'fs', 'path', 'stream', 'Terminal'], alias: { // Library ESM imports - "@xterm/xterm": ".", + "@xterm/xterm": "./lib/xterm.mjs", "@xterm/addon-attach": "./addons/addon-attach/lib/addon-attach.mjs", "@xterm/addon-clipboard": "./addons/addon-clipboard/lib/addon-clipboard.mjs", "@xterm/addon-fit": "./addons/addon-fit/lib/addon-fit.mjs", @@ -164,6 +169,10 @@ if (config.addon) { format: 'cjs', platform: 'node', external: ['node-pty'], + // Splitting is not compatible with cjs format + splitting: false, + // Override the .mjs extension from commonOptions + outExtension: {}, } skipOut = true; skipOutTest = true; @@ -171,7 +180,8 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`src/headless/public/Terminal.ts`], - outfile: `headless/lib-headless/xterm-headless.mjs` + outdir: `headless/lib-headless`, + entryNames: 'xterm-headless', }; outConfig = { ...outConfig, @@ -183,7 +193,8 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`src/browser/public/Terminal.ts`], - outfile: `lib/xterm.mjs` + outdir: `lib`, + entryNames: 'xterm', }; outConfig = { ...outConfig, diff --git a/demo/index.html b/demo/index.html index 9c8eec666a..56a6c2a497 100644 --- a/demo/index.html +++ b/demo/index.html @@ -23,6 +23,6 @@
- +