You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ghost/.github/scripts/clean.js

79 lines
2.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 注意此文件不能使用任何NPM依赖因为它需要在依赖未安装或已损坏的情况下仍能运行
// 引入Node.js内置的子进程同步执行模块
const {execSync} = require('child_process');
// 执行一系列清理操作
cleanYarnCache(); // 清理Yarn缓存
resetNxCache(); // 重置NX构建缓存
deleteNodeModules(); // 删除所有node_modules目录
deleteBuildArtifacts(); // 删除构建产物
console.log('Cleanup complete!'); // 清理完成提示
/**
* 删除项目中的构建产物
* 包括ghost目录下所有名为build的文件夹和tsconfig.tsbuildinfo文件
*/
function deleteBuildArtifacts() {
console.log('Deleting all build artifacts...');
try {
// 查找ghost目录下所有名为build的目录并递归删除
execSync('find ./ghost -type d -name "build" -exec rm -rf \'{}\' +', {
stdio: 'inherit' // 子进程的输入输出继承自当前进程(显示执行过程)
});
// 查找ghost目录下所有tsconfig.tsbuildinfo文件并删除
execSync('find ./ghost -type f -name "tsconfig.tsbuildinfo" -delete', {
stdio: 'inherit'
});
} catch (error) {
console.error('Failed to delete build artifacts:', error);
process.exit(1); // 执行失败时退出进程状态码1表示错误
}
}
/**
* 删除项目中所有node_modules目录
* 用于彻底清理已安装的依赖包
*/
function deleteNodeModules() {
console.log('Deleting all node_modules directories...');
try {
// 从当前目录开始查找所有node_modules目录并递归删除
// -prune确保不会进入已找到的node_modules目录内部继续查找
execSync('find . -name "node_modules" -type d -prune -exec rm -rf \'{}\' +', {
stdio: 'inherit'
});
} catch (error) {
console.error('Failed to delete node_modules directories:', error);
process.exit(1);
}
}
/**
* 重置NX构建工具的缓存
* NX是用于 monorepo 项目的构建系统,缓存可能影响构建结果
*/
function resetNxCache() {
console.log('Resetting NX cache...');
try {
// 删除NX的缓存目录
execSync('rm -rf .nxcache .nx');
} catch (error) {
console.error('Failed to reset NX cache:', error);
process.exit(1);
}
}
/**
* 清理Yarn包管理器的缓存
* 移除缓存的依赖包副本,避免旧版本缓存影响安装
*/
function cleanYarnCache() {
console.log('Cleaning yarn cache...');
try {
// 删除Yarn缓存目录下的所有内容
execSync('rm -rf .yarncache/* .yarncachecopy/*');
} catch (error) {
console.error('Failed to clean yarn cache:', error);
process.exit(1);
}
}