mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-30 22:34:01 -05:00
Rewrote clean.sh script in javascript (#21909)
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.
This commit is contained in:
parent
3bac33ffff
commit
ec59aa39c5
3 changed files with 64 additions and 27 deletions
63
.github/scripts/clean.js
vendored
Normal file
63
.github/scripts/clean.js
vendored
Normal file
|
@ -0,0 +1,63 @@
|
|||
// 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);
|
||||
}
|
||||
}
|
26
.github/scripts/clean.sh
vendored
26
.github/scripts/clean.sh
vendored
|
@ -1,26 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Clean yarn cache
|
||||
echo "Cleaning yarn cache..."
|
||||
if [ "$DEVCONTAINER" = "true" ]; then
|
||||
# In devcontainer, these directories are mounted from the host so we can't delete them — only their contents
|
||||
rm -rf .yarncache/* .yarncachecopy/*
|
||||
else
|
||||
yarn cache clean
|
||||
fi
|
||||
|
||||
# Reset Nx
|
||||
echo "Resetting NX cache..."
|
||||
rm -rf .nxcache .nx
|
||||
|
||||
# Recursively delete all node_modules directories
|
||||
echo "Deleting all node_modules directories..."
|
||||
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
|
||||
|
||||
echo "Deleting all build artifacts..."
|
||||
find ./ghost -type d -name "build" -exec rm -rf '{}' +
|
||||
find ./ghost -type f -name "tsconfig.tsbuildinfo" -delete
|
||||
|
||||
echo "Cleanup complete!"
|
|
@ -23,7 +23,7 @@
|
|||
"archive": "nx run ghost:archive",
|
||||
"build": "nx run-many -t build",
|
||||
"build:clean": "nx reset && rimraf -g 'ghost/*/build' && rimraf -g 'ghost/*/tsconfig.tsbuildinfo'",
|
||||
"clean:hard": "./.github/scripts/clean.sh",
|
||||
"clean:hard": "node ./.github/scripts/clean.js",
|
||||
"dev:debug": "DEBUG_COLORS=true DEBUG=@tryghost*,ghost:* yarn dev",
|
||||
"dev:admin": "node .github/scripts/dev.js --admin",
|
||||
"dev:ghost": "node .github/scripts/dev.js --ghost",
|
||||
|
|
Loading…
Reference in a new issue