// 把 monaco-editor 自带的预构建 min/vs 复制到 public/monaco/vs, // 让 @monaco-editor/react 的 loader 在离线环境下从同源 /monaco/vs 加载, // 不再依赖 jsDelivr CDN。postinstall 时跑一次即可,产物不进 git(被 .gitignore // 忽略),由 pnpm install 重新生成。 import { cp, mkdir, rm, stat } from "node:fs/promises"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; const here = dirname(fileURLToPath(import.meta.url)); const frontendRoot = resolve(here, ".."); const src = resolve( frontendRoot, "node_modules/monaco-editor/min/vs", ); const dest = resolve(frontendRoot, "public/monaco/vs"); async function exists(p) { try { await stat(p); return true; } catch { return false; } } if (!(await exists(src))) { console.error( `[copy-monaco] 源目录不存在: ${src}\n` + `请确认 frontend/package.json 已声明 monaco-editor 依赖并已 pnpm install。`, ); process.exit(1); } await mkdir(dirname(dest), { recursive: true }); await rm(dest, { recursive: true, force: true }); await cp(src, dest, { recursive: true }); console.log(`[copy-monaco] ${src} -> ${dest}`);