Node.js — How to Create a Directory (and Parents If Needed)

Sometimes you want to programmatically store files on your local hard drive. You may want to create a nested folder structure on the disk to organize the files. That may require you to create new directories and probably nested directories.

This tutorial shows you how to seamlessly create a directory and the parent directories on the filesystem.

Node.js Series Overview

Create a Directory Recursively

When interacting with nested folder structures from your Node.js application, you should ensure that a given directory actually exists. In Node.js v8 and below you had to parse a given directory path and manually create every directory that doesn’t exist on the way.

Starting from Node.js v10, there’s a new option to the Fs#mkdir method: recursive. The recursive option tells Node.js to create all directories along a given path.

Please make sure you’re at least running Node.js 10.12.0 or later so that this functionality is available to you.

Here’s a sample ensureDir(path) function wrapping the recursive directory creation into a reusable utility method:

import Fs from 'fs/promises'

 * Recursively create a directory at the given `path`.
 * @param {String} path
async function ensureDir(path) {  
  await Fs.mkdir(path, { recursive: true })

 * Usage example: create a `storage/cache` directory in the current folder
await ensureDir('./storage/cache')  

That’s it!

Use the @supercharge/fs Package

I’m the maintainer of the @supercharge/fs package providing convenient file system utilities. The @supercharge/fs package comes with a handy ensureDir(path) method creating a directory at the given path and any parent directories if they don’t exist yet:

import Fs from '@supercharge/fs'

await Fs.ensureDir('./storage/cache')  

The @supercharge/fs package uses the native Node.js Fs#mkdir method to create a directory recursively.


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.