mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-30 22:34:01 -05:00
ec59aa39c5
ref https://linear.app/ghost/issue/ENG-1958/rewrite-cleansh-in-js - This script removes all node_modules, clears the yarn cache, nx cache, and deletes all build artifacts to provide a "fresh start". It's particularly useful for switching back and forth between local vs docker development environments because some of the node_modules (and therefore the caches) are built specifically for the architecture of whatever "host" they are built on. - The script works fine, but it's written in bash which isn't super easy to extend/modify and most of this repo is in JavaScript, so this commit just rewrites the bash script in JS for easier maintainability.
63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
// NOTE: this file can't use any NPM dependencies because it needs to run even if dependencies aren't installed yet or are corrupted
|
|
const {execSync} = require('child_process');
|
|
|
|
const isDevContainer = process.env.DEVCONTAINER === 'true';
|
|
|
|
cleanYarnCache();
|
|
resetNxCache();
|
|
deleteNodeModules();
|
|
deleteBuildArtifacts();
|
|
console.log('Cleanup complete!');
|
|
|
|
function deleteBuildArtifacts() {
|
|
console.log('Deleting all build artifacts...');
|
|
try {
|
|
execSync('find ./ghost -type d -name "build" -exec rm -rf \'{}\' +', {
|
|
stdio: 'inherit'
|
|
});
|
|
execSync('find ./ghost -type f -name "tsconfig.tsbuildinfo" -delete', {
|
|
stdio: 'inherit'
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to delete build artifacts:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function deleteNodeModules() {
|
|
console.log('Deleting all node_modules directories...');
|
|
try {
|
|
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);
|
|
}
|
|
}
|
|
|
|
function resetNxCache() {
|
|
console.log('Resetting NX cache...');
|
|
try {
|
|
execSync('rm -rf .nxcache .nx');
|
|
} catch (error) {
|
|
console.error('Failed to reset NX cache:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function cleanYarnCache() {
|
|
console.log('Cleaning yarn cache...');
|
|
try {
|
|
if (isDevContainer) {
|
|
// In devcontainer, these directories are mounted from the host so we can't delete them — `yarn cache clean` will fail
|
|
// so we delete the contents of the directories instead
|
|
execSync('rm -rf .yarncache/* .yarncachecopy/*');
|
|
} else {
|
|
execSync('yarn cache clean');
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to clean yarn cache:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|