一尘不染

如何使用节点的fs.mkdirSync创建完整路径?

node.js

我正在尝试创建完整路径(如果不存在)。

代码如下:

var fs = require('fs');
if (!fs.existsSync(newDest)) fs.mkdirSync(newDest);

只要只有一个子目录(例如“ dir1”之类的newDest),此代码就可以很好地工作,但是当存在一个目录路径(“ dir1 /
dir2”)时,它将失败并显示 错误:ENOENT,没有这样的文件或目录

我希望能够用最少的代码行来创建完整路径。

我读到fs上有一个递归选项,并像这样尝试过

var fs = require('fs');
if (!fs.existsSync(newDest)) fs.mkdirSync(newDest,'0777', true);

我觉得递归地创建一个不存在的目录应该很简单。我是否丢失了某些内容,还是需要解析路径并检查每个目录并创建它(如果尚不存在)?

我对Node很陌生。也许我使用的是旧版的FS?


阅读 569

收藏
2020-07-07

共1个答案

一尘不染

一种选择是使用shelljs模块

npm安装shelljs

var shell = require('shelljs');
shell.mkdir('-p', fullPath);

从该页面:

可用选项:

p:完整路径(如有必要,将创建中间目录)

正如其他人指出的那样,还有其他更专注的模块。但是,在mkdirp之外,它还有大量其他有用的shell操作(例如grep等),并且可以在Windows和*
nix上运行

2020-07-07