Skip to content

Asynchronously convert directory tree structure into a javascript object.

License

Notifications You must be signed in to change notification settings

traviswimer/dir-to-json

Repository files navigation

dir-to-json Tests

Asynchronously convert directory tree structure into a JavaScript object.

Getting Started

Install

Yarn:

yarn add dir-to-json

NPM:

npm install dir-to-json --save

Usage

import dirToJson from "dir-to-json";

dirToJson("./path/to/my/dir", { sortType: true })
	.then(function (dirTree) {
		console.log(dirTree);
	})
	.catch(function (err) {
		throw err;
	});

Callback syntax

The callback syntax has been split into another module in version 1.0.0. If you would still like to use it, just change your import to dir-to-json/callback:

import dirToJson from "dir-to-json/callback";

dirToJson("./path/to/my/dir", function (err, dirTree) {
	if (err) {
		throw err;
	} else {
		console.log(dirTree);
	}
});

Requirements

  • NodeJS version 14 or higher

Since Version 1.0.0 of dir-to-json, the lowest supported version of NodeJS is 14. If you are using an older version of Node, try installing [email protected]

API

dirToJson( path [, options ] [, callback ] )

path

  • type: string
  • description: Path to the directory you would like to obtain a tree object from.

options (optional)

  • type: object
  • description: Allows output to be customized.
  • Accepted properties:
    • sortType boolean (Default: true) - If true, directories will be listed before files in all children arrays. If false, array contents will be listed in the order which they are returned from fs.readdir().

callback( err, directoryTree ) (optional)

  • type: function
  • description: Callback function
    • err - Error object on fail. null on success.
    • directoryTree - Object containing heirarchical directory data.

Structure of output

{
	"parent": "..",
	"path": "",
	"name": "coverage",
	"type": "directory",
	"children": [{
		"parent": "",
		"path": "coverage-final.json",
		"name": "coverage-final.json",
		"type": "file"
	}, {
		"parent": "",
		"path": "index.html",
		"name": "index.html",
		"type": "file"
	}, {
		"parent": "",
		"path": "lcov-report",
		"name": "lcov-report",
		"type": "directory",
		"children": [{
			"parent": "lcov-report",
			"path": "lcov-report/index.html",
			"name": "index.html",
			"type": "file"
		}, {
			"parent": "lcov-report",
			"path": "lcov-report/prettify.css",
			"name": "prettify.css",
			"type": "file"
		}, {
			"parent": "lcov-report",
			"path": "lcov-report/prettify.js",
			"name": "prettify.js",
			"type": "file"
		}, {
			"parent": "lcov-report",
			"path": "lcov-report/src",
			"name": "src",
			"type": "directory",
			"children": [{
				"parent": "lcov-report/src",
				"path": "lcov-report/src/createDirectoryObject.js.html",
				"name": "createDirectoryObject.js.html",
				"type": "file"
			}, {
				"parent": "lcov-report/src",
				"path": "lcov-report/src/index.html",
				"name": "index.html",
				"type": "file"
			}, {
				"parent": "lcov-report/src",
				"path": "lcov-report/src/main.js.html",
				"name": "main.js.html",
				"type": "file"
			}]
		}]
	}, {
		"parent": "",
		"path": "lcov.info",
		"name": "lcov.info",
		"type": "file"
	}, {
		"parent": "",
		"path": "prettify.css",
		"name": "prettify.css",
		"type": "file"
	}, {
		"parent": "",
		"path": "prettify.js",
		"name": "prettify.js",
		"type": "file"
	}, {
		"parent": "",
		"path": "src",
		"name": "src",
		"type": "directory",
		"children": [{
			"parent": "src",
			"path": "src/createDirectoryObject.js.html",
			"name": "createDirectoryObject.js.html",
			"type": "file"
		}, {
			"parent": "src",
			"path": "src/index.html",
			"name": "index.html",
			"type": "file"
		}, {
			"parent": "src",
			"path": "src/main.js.html",
			"name": "main.js.html",
			"type": "file"
		}]
	}]
}

Project Links

Author

Travis Wimer

License

MIT. Copyright © 2022 Travis Wimer