From b5abdb9720a87dbe041c27009012cea9ba3f038a Mon Sep 17 00:00:00 2001 From: allo Date: Fri, 4 Sep 2026 10:27:57 +0800 Subject: [PATCH] build: resolve esbuild from frontend via createRequire instead of hardcoded node_modules path --- scripts/build-legacy-pure.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/build-legacy-pure.mjs b/scripts/build-legacy-pure.mjs index 2657d64..dd89deb 100755 --- a/scripts/build-legacy-pure.mjs +++ b/scripts/build-legacy-pure.mjs @@ -9,11 +9,14 @@ // `node scripts/build-legacy-pure.mjs` after editing the TS sources. import { writeFileSync } from 'node:fs'; +import { createRequire } from 'node:module'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; -import { buildSync } from '../frontend/node_modules/esbuild/lib/main.js'; const root = path.dirname(path.dirname(fileURLToPath(import.meta.url))); +// esbuild is a transitive dependency of vite inside frontend/. Resolve it from +// there instead of hardcoding node_modules layout, which breaks when hoisting changes. +const { buildSync } = createRequire(path.join(root, 'frontend', 'package.json'))('esbuild'); const entry = path.join(root, 'frontend', 'src', 'lib', 'legacy-pure.ts'); const outfile = path.join(root, 'public', 'js', 'pure.js');