Files
model-platform/frontend/scripts/copy-monaco.mjs
T

41 lines
1.2 KiB
JavaScript

// 把 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}`);