Eliminar directorio que no esté vacío
En mi aplicación Node necesito eliminar un directorio que tiene algunos archivos, pero que fs.rmdir
solo funciona en directorios vacíos. ¿Cómo puedo hacer esto?
Aceptado
A partir de Node.js 14.14.0, la forma recomendada es utilizar fs.rmSync
:
fs.rmSync(dir, { recursive: true, force: true });
Hay un módulo para esto llamado rimraf
( https://npmjs.org/package/rimraf ). Proporciona la misma funcionalidad querm -Rf
Uso asíncrono :
var rimraf = require("rimraf");
rimraf("/some/directory", function () { console.log("done"); });
Uso de sincronización :
rimraf.sync("/some/directory");
Para eliminar la carpeta sincrónicamente
const fs = require('fs');
const Path = require('path');
const deleteFolderRecursive = function (directoryPath) {
if (fs.existsSync(directoryPath)) {
fs.readdirSync(directoryPath).forEach((file, index) => {
const curPath = path.join(directoryPath, file);
if (fs.lstatSync(curPath).isDirectory()) {
// recurse
deleteFolderRecursive(curPath);
} else {
// delete file
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(directoryPath);
}
};