A tiny (381B to 419B) utility to make a directory and its parents, recursively
npm install mk-dirs> A tiny (381B to 419B) utility to make a directory and its parents, recursively
This is a Promise-based utility that recursively creates directories. It's effectively mkdir -p for Node.js.
This module is a fast and lightweight alternative to mkdirp. Check out Comparisons for more info!
> Notice: Node v10.12.0 includes the recursive option for fs.mkdir and fs.mkdirSync.
``js
const { mkdir } = require('fs');
const { promisify } = require('util');
const mkdirp = promisify(mkdir);
function mkdirs(str, opts={}) {
return mkdirp(str, { ...opts, recursive:true });
}
`
``
$ npm install --save mk-dirs
There are two "versions" of mk-dirs available:
#### "async"
> Node.js: >= 8.x
> Size (gzip): 419 bytes
> Availability: CommonJS, ES Module
This is the primary/default mode. It makes use of async/await and util.promisify.
#### "sync"
> Node.js: >= 6.x
> Size (gzip): 381 bytes
> Availability: CommonJS, ES Module
This is the opt-in mode, ideal for scenarios where async usage cannot be supported.
In order to use it, simply make the following changes:
`diff`
-import { mkdir } from 'mk-dirs';
+import { mkdir } from 'mk-dirs/sync';
`sh
$ pwd/Users/hello/world
$ tree
`js
import { mkdir } from 'mk-dirs';
import { resolve } from 'path';// Async/await
try {
let output = await mkdir('foo/bar/baz');
console.log(output); //=> "/Users/hello/world/foo/bar/baz"
} catch (err) {
//
}
// Promises
mkdir('foo/bar/baz').then(output => {
console.log(output); //=> "/Users/hello/world/foo/bar/baz"
}).catch(err => {
//
});
// Using
cwd option
let dir = resolve('foo/bar');
await mkdir('hola/mundo', { cwd: dir });
//=> "/Users/hello/world/foo/bar/hola/mundo"
``sh
$ tree
.
└── foo
└── bar
└── baz
└── hola
└── mundo
`
API
$3
Returns: PromiseReturns a
Promise, which resolves with the full path (string) of the created directory.
Any file system errors will be thrown and must be caught manually.#### path
Type:
StringThe directory to create.
#### options.cwd
Type:
String
Default: .The directory to resolve your
path from.
Defaults to the process.cwd() – aka, the directory that your command is run within.#### options.mode
Type:
Number
Default: 0o777 & (~process.umask())The directory permissions to set.
> Important: Must be in octal format!
Comparisons
Versus
make-dir*
mk-dirs is slightly faster
* ...has zero dependencies
* ...does offer cwd option
* ...does not re-wrap an existing Promise
* ...does not ship with a sync method
* ...does not allow custom fs optionVersus
mkdirp*
mk-dirs is _much_ faster
* ...has zero dependencies
* ...is a Promise-based API
* ...is async/await ready!
* ...is tested on macOS, Linux, and Windows
* ... has fixes for mkdirp issues: #96, #70, #66
* ...includes a cwd option
* ...does not ship with a sync method
* ...does not allow custom fs option
* ...does not bundle a CLI runtimeRelated
totalist - A tiny (195B to 224B) utility to recursively list all (total) files in a directory
- escalade - A tiny (183B) and fast utility to ascend parent directories
- premove` – A tiny (247B) utility to remove items recursivelyMIT © Luke Edwards