124 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			124 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # make-dir [](https://travis-ci.org/sindresorhus/make-dir) [](https://codecov.io/gh/sindresorhus/make-dir)
 | ||
|  | 
 | ||
|  | > Make a directory and its parents if needed - Think `mkdir -p`
 | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Advantages over [`mkdirp`](https://github.com/substack/node-mkdirp)
 | ||
|  | 
 | ||
|  | - Promise API *(Async/await ready!)* | ||
|  | - Fixes many `mkdirp` issues: [#96](https://github.com/substack/node-mkdirp/pull/96) [#70](https://github.com/substack/node-mkdirp/issues/70) [#66](https://github.com/substack/node-mkdirp/issues/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](https://nodejs.org/dist/latest/docs/api/fs.html#fs_fs_mkdir_path_options_callback) in Node.js >=10.12.0 unless [overridden](#fs) | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Install
 | ||
|  | 
 | ||
|  | ``` | ||
|  | $ npm install make-dir | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Usage
 | ||
|  | 
 | ||
|  | ``` | ||
|  | $ pwd | ||
|  | /Users/sindresorhus/fun | ||
|  | $ tree | ||
|  | . | ||
|  | ``` | ||
|  | 
 | ||
|  | ```js | ||
|  | 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: | ||
|  | 
 | ||
|  | ```js | ||
|  | 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`<br> | ||
|  | Default: `0o777 & (~process.umask())` | ||
|  | 
 | ||
|  | Directory [permissions](https://x-team.com/blog/file-system-permissions-umask-node-js/). | ||
|  | 
 | ||
|  | ##### fs
 | ||
|  | 
 | ||
|  | Type: `Object`<br> | ||
|  | Default: `require('fs')` | ||
|  | 
 | ||
|  | Use a custom `fs` implementation. For example [`graceful-fs`](https://github.com/isaacs/node-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. | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Related
 | ||
|  | 
 | ||
|  | - [make-dir-cli](https://github.com/sindresorhus/make-dir-cli) - CLI for this module | ||
|  | - [del](https://github.com/sindresorhus/del) - Delete files and directories | ||
|  | - [globby](https://github.com/sindresorhus/globby) - User-friendly glob matching | ||
|  | - [cpy](https://github.com/sindresorhus/cpy) - Copy files | ||
|  | - [cpy-cli](https://github.com/sindresorhus/cpy-cli) - Copy files on the command-line | ||
|  | - [move-file](https://github.com/sindresorhus/move-file) - Move a file | ||
|  | 
 | ||
|  | 
 | ||
|  | ## License
 | ||
|  | 
 | ||
|  | MIT © [Sindre Sorhus](https://sindresorhus.com) |