File name
Commit message
Commit date

make-dir Build Status codecov#

Make a directory and its parents if needed - Think mkdir -p

Advantages over mkdirp#

  • Promise API (Async/await ready!)
  • Fixes many mkdirp issues: #96 #70 #66
  • 100% test coverage
  • CI-tested on macOS, Linux, and Windows
  • Actively maintained
  • Doesn't bundle a CLI
  • Uses native the fs.mkdir/mkdirSync recursive option in Node.js >=10.12.0 unless overridden

Install#

$ npm install make-dir

Usage#

$ pwd
/Users/sindresorhus/fun
$ tree
.
const makeDir = require('make-dir');

(async () => {
    const path = await makeDir('unicorn/rainbow/cake');

    console.log(path);
    //=> '/Users/sindresorhus/fun/unicorn/rainbow/cake'
})();
$ tree
.
└── unicorn
    └── rainbow
        └── cake

Multiple directories:

const makeDir = require('make-dir');

(async () => {
    const paths = await Promise.all([
        makeDir('unicorn/rainbow'),
        makeDir('foo/bar')
    ]);

    console.log(paths);
    /*
    [
        '/Users/sindresorhus/fun/unicorn/rainbow',
        '/Users/sindresorhus/fun/foo/bar'
    ]
    */
})();

API#

makeDir(path, [options])#

Returns a Promise for the path to the created directory.

makeDir.sync(path, [options])#

Returns the path to the created directory.

path#

Type: string

Directory to create.

options#

Type: Object

mode#

Type: integer

Default: 0o777 & (~process.umask())

Directory permissions.

fs#

Type: Object

Default: require('fs')

Use a custom fs implementation. For example graceful-fs.

Using a custom fs implementation will block the use of the native recursive option if fs.mkdir or fs.mkdirSync is not the native function.

License#

MIT © Sindre Sorhus