首页 > 解决方案 > Node JS 创建嵌套目录

问题描述

我想编写一个函数,该函数基于内部包含文件的对象结构创建嵌套目录。到目前为止,我已经到了能够创建此类目录的地步,但它仅适用于对象的第一个键。

下面的代码:

const fs = require("fs");
const templates = require("./templates.js");

const appDirectory = process.cwd();

function run() {
  createDirectories(templates);
}

function createDirectories(obj, path = "") {
  for (const prop in obj) {
    if (typeof obj[prop] === "object" && obj[prop] !== null) {
      path += `/${prop}`
      if (!fs.existsSync(`${appDirectory}/${path}`)) {
        fs.mkdir(`${appDirectory}/${path}`, (err) => {
          if (err) { return console.log(err) }
          console.log(`Directory created: ${path}`);
        })
      }
      return createDirectories(obj[prop], path);
    } else {
      fs.writeFile(`${appDirectory}/${path}/${prop}`, obj[prop], (err) => {
        if (err) { return console.log(err) }
        console.log(`File created: ${prop} in ${path} directory`);
      })
      return prop;
    }
  }
}

run();

并且目录的结构在一个对象内部

module.exports = {
  "directory1": {
    "innerDirectory1": {
      "file1.js": require("./file1.js")
    }
  },
  "directory2": {
    "innerDirectory2": {
      "file2.js": require("./file2.js")
    }
  },
  "directory3": {
    "innerDirectory3": {
      "file3.js": require("./file3.js")
    }
  }
}

从这段代码中,我只得到了一个创建的对象目录( directory1/innerDirectory1/file1.js )

标签: node.jsfs

解决方案


推荐阅读