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

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js (Coming soon)
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js (Coming soon)
  18. Check If a String Is in Lowercase in JavaScript or Node.js (Coming soon)
  19. Check If a String is in Uppercase in JavaScript or Node.js (Coming soon)
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js (Coming soon)
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js (Coming soon)
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js (Coming soon)
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js (Coming soon)
  1. Check if a Value is a Symbol in JavaScript or Node.js (Coming soon)
  1. Detect if Running on Linux (Coming soon)
  2. Detect if Running on macOS (Coming soon)
  3. Detect if Running on Windows (Coming soon)
  1. How to Download a File (Coming soon)

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 Fs.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.

Enjoy!


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.