最近,在处理一个新项目时,我需要创建一系列嵌套目录。从命令行,这很简单,只需将 -p 传递给 mkdir,它就会自动创建所有父目录。就像这样

$ mkdir -pv ./path/to/my/directory

# mkdir: created directory './path'
# mkdir: created directory './path/to'
# mkdir: created directory './path/to/my'
# mkdir: created directory './path/to/my/directory'

使用 Node.js 的现代版本,特别是 10 及以上版本,您可以使用 fs 实现相同的功能:

同步

const fs = require('fs')

fs.mkdirSync('./path/to/my/directory', { recursive: true })

异步

const fs = require('fs')

await fs.promises.mkdir('./path/to/my/directory', { recursive: true })

假设您使用的是 Node.js 的旧版本,并且不愿意升级到 10+,那么您将不得不手动执行更多操作。

要点是,您需要将路径分开并循环遍历其中的每个部分,同时创建不存在的父目录。看起来像这样:

const fs = require('fs')

const path = './path/to/my/directory'

path.split("/").reduce((directories, directory) => {
  directories += `${directory}/`

  if (!fs.existsSync(directories)) {
    fs.mkdirSync(directories)
  }

  return directories
}, '')