Fui excluir coisas desnecessárias do meu computador e me deparei com vários GB só em node_modules. Logo pensei: "nem a pau vou excluir uma por uma". São vários projetos pessoais e de estudos, então fui ao nosso amigo Geppetto e pedi um código para varrer a minha pasta de projetos e excluir qualquer node_modules que encontrar. Deixo abaixo o código para Linux que ele gerou e também a versão em Node.js para executar em qualquer sistema, desde que esteja com o node instalado.
#!/bin/bash
path="/home/fulano/Projects"
if [ -d "$path" ]; then
cd "$path"
for subfolder in */; do
if [ -d "$subfolder" ]; then
echo "Searching for node_modules in $subfolder..."
find "$subfolder" -name "node_modules" -type d -prune -exec rm -rf '{}' +
echo "node_modules folders deleted in $subfolder."
fi
done
echo "Operation completed."
else
echo "The 'Projects' folder was not found."
fi
Versão em Node.Js
const fs = require('node:fs');
const path = require('node:path');
const targetFolder = process.argv[2];
if (!targetFolder) {
console.error(
'\x1b[31m',
'Please provide the folder path as an argument.',
'\x1b[0m'
);
process.exit(1);
}
console.log(
'\n\x1b[36m',
`❯ Searching for node_modules folders in ${targetFolder}...`,
'\x1b[0m\n'
);
function recursivelyDeleteNodeModules(folder) {
try {
const files = fs.readdirSync(folder);
for (const file of files) {
const filePath = path.join(folder, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
if (file === 'node_modules') {
fs.rmSync(filePath, { recursive: true });
} else {
recursivelyDeleteNodeModules(filePath);
}
}
}
} catch (err) {
console.error(
'\x1b[31m',
`Error processing folder ${folder}: ${err}`,
'\x1b[0m'
);
}
}
recursivelyDeleteNodeModules(targetFolder);
console.log(
'\n\x1b[32m',
'Deleted all node_modules folders successfully.',
'\x1b[0m\n'
);
Lembre-se de passar o caminho da sua pasta de projetos ou estudos como argumento.
node delete-node-modules.js /home/fulano/Projects/