当然,你可以创建一个函数来检查指定的目录是否存在,如果不存在,则创建它们。以下是一个实现示例:
const fs = require('fs');
function createDirectories(directories) {
directories.forEach(directory => {
// 判断目录是否存在
if (!fs.existsSync(directory)) {
// 如果不存在则创建目录
fs.mkdirSync(directory, { recursive: true }, err => {
if (err) {
console.error(`创建 ${directory} 目录出错:`, err);
} else {
console.log(`${directory} 目录创建成功!`);
}
});
} else {
console.log(`${directory} 目录已存在。`);
}
});
}
// 要创建的目录列表
const directories = ['js', 'css', 'images', 'fonts'];
// 调用函数
createDirectories(directories);
这个函数接受一个包含目录名称的数组,然后遍历这个数组,对于每个目录,使用 fs.existsSync
检查是否存在,如果不存在,则使用 fs.mkdirSync
创建它。
请注意,这里我使用了同步方法(例如 fs.existsSync
和 fs.mkdirSync
)。在某些情况下,这可能是合适的,特别是在初始化或配置脚本中。但在高吞吐量的服务器环境中,你可能希望使用异步版本,以便不阻塞事件循环。
异步方式
const fs = require('fs');
function createDirectory(directory) {
// 检查目录是否存在
fs.access(directory, err => {
if (err) {
// 如果目录不存在,则创建
fs.mkdir(directory, { recursive: true }, err => {
if (err) {
console.error(`创建 ${directory} 目录出错:`, err);
} else {
console.log(`${directory} 目录创建成功!`);
}
});
} else {
console.log(`${directory} 目录已存在。`);
}
});
}
function createDirectories(directories) {
directories.forEach(directory => {
createDirectory(directory);
});
}
// 要创建的目录列表
const directories = ['js', 'css', 'images', 'fonts'];
// 调用函数
createDirectories(directories);
我将目录创建的逻辑分离到了一个新的createDirectory函数中,并使用了fs.access来异步检查目录是否存在。如果目录不存在,则使用fs.mkdir来异步创建它。
这样,整个操作都是非阻塞的,更适合在并发环境中使用。