Files
qiming/qimingclaw/crates/agent-electron-client/scripts/prepare/prepare-monaco.js

65 lines
1.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* 将 monaco-editor 的静态资源min/vs复制到 public/ 下,确保 Electron 打包后可离线加载。
*
* 目标产物:
* public/monaco/vs/**
*
* 运行时:
* 渲染进程通过 @monaco-editor/react 的 loader.config({ paths: { vs: "./monaco/vs" } })
* 指向该目录。
*/
/* eslint-disable no-console */
'use strict';
const path = require('path');
const fs = require('fs');
const { getProjectRoot } = require('../utils/project-paths');
const projectRoot = getProjectRoot();
const srcVsDir = path.join(projectRoot, 'node_modules', 'monaco-editor', 'min', 'vs');
const destVsDir = path.join(projectRoot, 'public', 'monaco', 'vs');
function copyDirRecursive(src, dest) {
if (!fs.existsSync(src)) return;
fs.mkdirSync(dest, { recursive: true });
for (const name of fs.readdirSync(src)) {
const s = path.join(src, name);
const d = path.join(dest, name);
const stat = fs.statSync(s);
if (stat.isDirectory()) {
copyDirRecursive(s, d);
} else {
fs.copyFileSync(s, d);
}
}
}
function main() {
if (!fs.existsSync(srcVsDir)) {
console.error('[prepare-monaco] 未找到 monaco-editor 资源目录:');
console.error(` ${srcVsDir}`);
console.error('[prepare-monaco] 请先执行 npm install');
process.exit(1);
}
// 清理旧产物,避免残留导致加载异常
if (fs.existsSync(destVsDir)) {
fs.rmSync(destVsDir, { recursive: true, force: true });
}
console.log('[prepare-monaco] 复制 monaco 静态资源...');
copyDirRecursive(srcVsDir, destVsDir);
// 基本校验loader 需要 loader.js
const loaderJs = path.join(destVsDir, 'loader.js');
if (!fs.existsSync(loaderJs)) {
console.warn('[prepare-monaco] ⚠️ 缺少 vs/loader.jsmonaco 可能无法加载');
}
console.log('[prepare-monaco] ✓ public/monaco/vs 已准备完成');
}
main();