diff --git a/package.json b/package.json index 0b6ffcc9..a8e965a6 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "typecheck": "tsc", "typegen": "wrangler types", "preview": "pnpm run build && pnpm run start", - "prepare": "husky" + "prepare": "husky", + "clean": "node scripts/clean.js" }, "engines": { "node": ">=18.18.0" diff --git a/scripts/clean.js b/scripts/clean.js new file mode 100644 index 00000000..49c1f04b --- /dev/null +++ b/scripts/clean.js @@ -0,0 +1,45 @@ +import { rm, existsSync } from 'fs'; +import { join } from 'path'; +import { execSync } from 'child_process'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const dirsToRemove = ['node_modules/.vite', 'node_modules/.cache', '.cache', 'dist']; + +console.log('🧹 Cleaning project...'); + +// Remove directories +for (const dir of dirsToRemove) { + const fullPath = join(__dirname, '..', dir); + + try { + if (existsSync(fullPath)) { + console.log(`Removing ${dir}...`); + rm(fullPath, { recursive: true, force: true }, (err) => { + if (err) { + console.error(`Error removing ${dir}:`, err.message); + } + }); + } + } catch (err) { + console.error(`Error removing ${dir}:`, err.message); + } +} + +// Run pnpm commands +console.log('\n📦 Reinstalling dependencies...'); + +try { + execSync('pnpm install', { stdio: 'inherit' }); + console.log('\n🗑️ Clearing pnpm cache...'); + execSync('pnpm cache clean', { stdio: 'inherit' }); + console.log('\n🏗️ Rebuilding project...'); + execSync('pnpm build', { stdio: 'inherit' }); + console.log('\n✨ Clean completed! You can now run pnpm dev'); +} catch (err) { + console.error('\n❌ Error during cleanup:', err.message); + process.exit(1); +} diff --git a/scripts/clean.js.zip b/scripts/clean.js.zip new file mode 100644 index 00000000..78d7cce8 Binary files /dev/null and b/scripts/clean.js.zip differ