In meiner Node-Anwendung muss ich ein Verzeichnis entfernen, das einige Dateien enthält, aber fs.rmdir
funktioniert nur bei leeren Verzeichnissen. Wie kann ich das machen?
Antworten
Zu viele Anzeigen?Wenn Sie async/await bevorzugen, können Sie die fs/promises
API verwenden.
const fs = require('fs/promises');
const removeDir = async (dirPath) => {
await fs.rm(dirPath, {recursive: true});
}
Wenn Sie den Pfad einer einzelnen Datei im Ordner kennen und den Ordner löschen möchten, in dem sich diese Datei befindet.
const fs = require('fs/promises');
const path = require('path');
const removeDir = async (filePath) => {
const { dir } = path.parse(filePath);
await fs.rm(dir, { recursive: true });
}
In der neuesten Version von Node.js (12.10.0 oder höher) verfügen die rmdir
-Stil Funktionen fs.rmdir()
, fs.rmdirSync()
und fs.promises.rmdir()
über eine neue experimentelle Option recursive
, die das Löschen von nicht leeren Verzeichnissen ermöglicht, z.B.
fs.rmdir(path, { recursive: true });
Der entsprechende PR auf GitHub: https://github.com/nodejs/node/pull/29168
Ich bin hier gelandet, während ich versuchte, mit gulp
fertig zu werden, und schreibe für weitere Erreichbarkeit.
gulp-clean
veraltet fürgulp-rimraf
gulp-rimraf
veraltet zugunsten vondelete-files-folders
Wenn Sie Dateien und Ordner mit del
löschen möchten, sollten Sie /**
für die rekursive Löschung anhängen.
gulp.task('clean', function () {
return del(['some/path/to/delete/**']);
});