chore: initialize qiming workspace repository
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
#!/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.js,monaco 可能无法加载');
|
||||
}
|
||||
|
||||
console.log('[prepare-monaco] ✓ public/monaco/vs 已准备完成');
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
Reference in New Issue
Block a user