91 lines
2.3 KiB
JavaScript
91 lines
2.3 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
/**
|
||
* 清理构建产物脚本
|
||
*
|
||
* 清理源码目录中错误生成的编译产物
|
||
*/
|
||
|
||
import { execSync } from 'child_process';
|
||
import { readdirSync, statSync } from 'fs';
|
||
import { join } from 'path';
|
||
|
||
const projectRoot = process.cwd();
|
||
|
||
// 需要清理的文件类型
|
||
const cleanPatterns = [
|
||
'*.js.map',
|
||
'*.mjs.map',
|
||
'*.d.ts.map'
|
||
];
|
||
|
||
// 需要清理的目录(相对于项目根目录)
|
||
const cleanDirs = [
|
||
'packages/core/src',
|
||
'packages/web/src',
|
||
'packages/electron/src',
|
||
'packages/cli/src'
|
||
];
|
||
|
||
console.log('🧹 开始清理构建产物...');
|
||
|
||
let totalCleaned = 0;
|
||
|
||
for (const dir of cleanDirs) {
|
||
const fullPath = join(projectRoot, dir);
|
||
|
||
try {
|
||
// 检查目录是否存在
|
||
if (statSync(fullPath).isDirectory()) {
|
||
console.log(`📁 清理目录: ${dir}`);
|
||
|
||
for (const pattern of cleanPatterns) {
|
||
try {
|
||
const command = `find "${fullPath}" -name "${pattern}" -type f`;
|
||
const files = execSync(command, { encoding: 'utf8' }).trim();
|
||
|
||
if (files) {
|
||
const fileList = files.split('\n').filter(f => f.trim());
|
||
console.log(` 🗑️ 删除 ${fileList.length} 个 ${pattern} 文件`);
|
||
|
||
// 删除文件
|
||
execSync(`find "${fullPath}" -name "${pattern}" -type f -delete`);
|
||
totalCleaned += fileList.length;
|
||
}
|
||
} catch (error) {
|
||
// 忽略查找错误(通常是因为没有匹配的文件)
|
||
}
|
||
}
|
||
}
|
||
} catch (error) {
|
||
console.log(`⚠️ 目录不存在: ${dir}`);
|
||
}
|
||
}
|
||
|
||
console.log(`✅ 清理完成!共清理 ${totalCleaned} 个文件`);
|
||
|
||
// 如果有参数 --verbose,显示当前构建输出目录的状态
|
||
if (process.argv.includes('--verbose')) {
|
||
console.log('\\n📊 当前构建输出目录状态:');
|
||
|
||
const outputDirs = [
|
||
'packages/core/js',
|
||
'packages/core/dist',
|
||
'packages/web/dist',
|
||
'packages/electron/dist',
|
||
'packages/cli/dist'
|
||
];
|
||
|
||
for (const dir of outputDirs) {
|
||
const fullPath = join(projectRoot, dir);
|
||
try {
|
||
const stats = statSync(fullPath);
|
||
if (stats.isDirectory()) {
|
||
const files = readdirSync(fullPath);
|
||
console.log(` 📁 ${dir}: ${files.length} 个文件`);
|
||
}
|
||
} catch (error) {
|
||
console.log(` 📁 ${dir}: 不存在`);
|
||
}
|
||
}
|
||
} |