删除不为空的目录

在我的Node应用程序中,我需要删除一个包含一些文件的目录,但fs.rmdir仅适用于空目录。我怎样才能做到这一点?

千羽2020/03/19 11:26:57

只需使用rmdir模块这很简单。

达蒙Davaid斯丁2020/03/19 11:26:57

根据fs文档fsPromises当前提供的recursive选项是实验性的,至少就我个人而言,在Windows上,该选项会删除目录及其中的任何文件。

fsPromises.rmdir(path, {
  recursive: true
})

是否recursive: true在Linux和MacOS上删除文件?

TomAL2020/03/19 11:26:56

2020更新

从版本12.10.0 起,为选项添加了recursiveOption

请注意,递归删除是实验性的

因此,您可以进行同步:

fs.rmdirSync(dir, {recursive: true});

或异步:

fs.rmdir(dir, {recursive: true});
JimJim小小2020/03/19 11:26:56

在Node.js的最新版本(12.10.0或更高版本),在rmdir风格的功能fs.rmdir()fs.rmdirSync()以及fs.promises.rmdir()有一个新的实验性的选项recursive,允许删除非空目录,例如

fs.rmdir(path, { recursive: true });

GitHub上的相关PR:https : //github.com/nodejs/node/pull/29168

番长西里神无2020/03/19 11:26:56

截至2019年...

Node.js 12.10.0版本开始,它fs.rmdir支持recursive选项,因此您最终可以执行以下操作:

fs.rmdir(dir, { recursive: true });

recursive选项以递归方式删除整个目录。

Tony宝儿2020/03/19 11:26:56

为此有一个名为rimrafhttps://npmjs.org/package/rimraf的模块它提供的功能与rm -Rf

异步用法:

var rimraf = require("rimraf");
rimraf("/some/directory", function () { console.log("done"); });

同步使用情况:

rimraf.sync("/some/directory");