How to convert a directory structure in the filesystem to JSON with Node.js?

Sometimes, we want to convert a directory structure in the filesystem to JSON with Node.js.

In this article, we’ll look at how to convert a directory structure in the filesystem to JSON with Node.js.

How to convert a directory structure in the filesystem to JSON with Node.js?

To convert a directory structure in the filesystem to JSON with Node.js, we can loop through the files and directories recursively.

For instance, we write

const fs = require('fs')
const path = require('path')

const dirTree = (filename) => {
  const stats = fs.lstatSync(filename)
  const info = {
    path: filename,
    name: path.basename(filename)
  };

  if (stats.isDirectory()) {
    info.type = "folder";
    info.children = fs.readdirSync(filename).map((child) => {
      return dirTree(`${filename}/${child}`);
    });
  } else {
    info.type = "file";
  }
  return info;
}

to define the dirTree function that gets the items in a directory with lstatSync.

Then we check if filename is a directory with stats.isDirectory.

If it is, then we call readdirSync to read the folder and call map with a callback that calls dirTree to read the directory.

Otherwise, we set info.type to 'file'.

And finally, we return info when we’re done.

Conclusion

To convert a directory structure in the filesystem to JSON with Node.js, we can loop through the files and directories recursively.