mkdirplz
Version:
Make directories recursively -plz
30 lines (26 loc) • 759 B
JavaScript
const fs = require('fs');
const { dirname } = require('path');
const { promisify } = require('util');
const readdir = promisify(fs.readdir);
const mkdir = promisify(fs.mkdir);
/**
* Make directories recursively
* @param {String} path The full path
* @param {Object} [options] Optiosn object
* @param {Boolean} [filepath=false] If true skip the basename
*/
async function mkdirplz(path, { filepath = false } = {}) {
if (path === '') return;
const dir = filepath ? dirname(path) : path;
try {
await readdir(dir);
} catch (err) {
await mkdirplz(dir, { filepath: true }); // no skipping from now on
try {
await mkdir(dir);
} catch (err2) {
if (err2.code !== 'EEXIST') throw err2;
}
}
}
module.exports = mkdirplz;