84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const fs = require('fs')
|
|
const path = require('path')
|
|
|
|
/**
|
|
* Clean empty folders recursively in a given directory
|
|
* @param {string} dirPath - The directory path to clean
|
|
* @returns {number} - Number of empty folders removed
|
|
*/
|
|
function cleanEmptyFolders (dirPath) {
|
|
let removedCount = 0
|
|
|
|
if (!fs.existsSync(dirPath)) {
|
|
console.log('Directory does not exist:', dirPath)
|
|
return removedCount
|
|
}
|
|
|
|
try {
|
|
const items = fs.readdirSync(dirPath)
|
|
|
|
// First, recursively clean subdirectories
|
|
for (const item of items) {
|
|
const itemPath = path.join(dirPath, item)
|
|
const stats = fs.statSync(itemPath)
|
|
|
|
if (stats.isDirectory()) {
|
|
removedCount += cleanEmptyFolders(itemPath)
|
|
}
|
|
}
|
|
|
|
// After cleaning subdirectories, check if current directory is now empty
|
|
const remainingItems = fs.readdirSync(dirPath)
|
|
if (remainingItems.length === 0) {
|
|
// Don't remove the root node_modules directory itself
|
|
const nodeModulesPath = path.resolve(process.cwd(), 'work/app/node_modules')
|
|
if (path.resolve(dirPath) !== nodeModulesPath) {
|
|
console.log('Removing empty directory:', dirPath)
|
|
fs.rmdirSync(dirPath)
|
|
removedCount++
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error('Error processing directory ' + dirPath + ':', error.message)
|
|
}
|
|
|
|
return removedCount
|
|
}
|
|
|
|
/**
|
|
* Main function to clean empty folders in work/app/node_modules
|
|
*/
|
|
function main () {
|
|
const targetDir = path.resolve(process.cwd(), 'work/app/node_modules')
|
|
|
|
console.log('Starting cleanup of empty folders in:', targetDir)
|
|
console.log('='.repeat(60))
|
|
|
|
if (!fs.existsSync(targetDir)) {
|
|
console.log('Target directory does not exist:', targetDir)
|
|
return
|
|
}
|
|
|
|
const startTime = Date.now()
|
|
const removedCount = cleanEmptyFolders(targetDir)
|
|
const endTime = Date.now()
|
|
|
|
console.log('='.repeat(60))
|
|
console.log('Cleanup completed!')
|
|
console.log('Empty folders removed:', removedCount)
|
|
console.log('Time taken:', endTime - startTime + 'ms')
|
|
|
|
if (removedCount === 0) {
|
|
console.log('No empty folders found.')
|
|
}
|
|
}
|
|
|
|
// Run the script if called directly
|
|
if (require.main === module) {
|
|
main()
|
|
}
|
|
|
|
module.exports = { cleanEmptyFolders, main }
|