1. 遍历入参中对应文件夹下的所有文件,并返回对应文件完整路径
const fs = require("fs")
const path = require("path")
function travel(basePath, callback) {
fs
.readdirSync(basePath)
.forEach((file) => {
let filePath = path.join(basePath, file)
if (fs.statSync(filePath).isDirectory()) {
travel(filePath, callback)
} else {
callback(filePath)
}
})
}
let basePath = './server'
travel(basePath, function (filePath) {
console.log(filePath)
})
2. 根据入参路径创建对应目录和文件
const fs = require("fs")
const path = require("path")
const toResolvePath = (...file) => path.resolve(process.cwd(), ...file);
const dirCreate = (targetPath, cb) => {
if (fs.existsSync(targetPath)) {
cb()
} else {
dirCreate(path.dirname(targetPath), () => {
fs.mkdirSync(targetPath)
cb()
})
}
}
const generateDirectoryCreate = async (dirPath) => {
return new Promise((resolve, reject) => {
dirCreate(dirPath, resolve)
})
}
const generateFileCreate = async (filePath, content) => {
return new Promise((resolve, reject) => {
fs.writeFile(filePath, content, 'utf8', err => {
if (err) {
console.log(err.message);
reject(err)
} else {
resolve()
}
})
})
}
const basePath = './aaa/bbb'
const resolvedPath = toResolvePath(basePath);
generateDirectoryCreate(resolvedPath);
generateFileCreate(toResolvePath(basePath, 'index.js'), 'aaabbb\ncccddd');