hyperchat/packages/electron/scripts/move-web.js

59 lines
1.6 KiB
JavaScript

#!/usr/bin/env node
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
/**
* 跨平台复制 web 构建产物到 electron 目录
* 替代原来的 Unix 命令: mkdir -p dist/core/web-build && cp -r ../web/build/* dist/core/web-build/
*/
const sourceDir = path.join(__dirname, '..', '..', 'web', 'build');
const targetDir = path.join(__dirname, '..', 'dist', 'core', 'web-build');
function copyRecursiveSync(src, dest) {
const exists = fs.existsSync(src);
const stats = exists && fs.statSync(src);
const isDirectory = exists && stats.isDirectory();
if (isDirectory) {
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
fs.readdirSync(src).forEach(childItemName => {
copyRecursiveSync(
path.join(src, childItemName),
path.join(dest, childItemName)
);
});
} else {
fs.copyFileSync(src, dest);
}
}
try {
console.log(`📂 复制 Web 构建产物...`);
console.log(` 源目录: ${sourceDir}`);
console.log(` 目标目录: ${targetDir}`);
// 检查源目录是否存在
if (!fs.existsSync(sourceDir)) {
console.error(`❌ 错误: 源目录不存在 ${sourceDir}`);
console.error(` 请先运行: cd ../web && npm run build`);
process.exit(1);
}
// 确保目标目录存在
fs.mkdirSync(targetDir, { recursive: true });
// 复制所有文件
copyRecursiveSync(sourceDir, targetDir);
console.log(`✅ Web 构建产物复制完成!`);
} catch (error) {
console.error(`❌ 复制失败:`, error.message);
process.exit(1);
}