dir-to-json
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 is14
. If you are using an older version of Node, try installingdir-to-json@0.0.3
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
) - Iftrue
, directories will be listed before files in allchildren
arrays. Iffalse
, array contents will be listed in the order which they are returned fromfs.readdir()
.
-
sortType boolean (Default:
callback( err, directoryTree ) (optional)
- type: function
- description: Callback function
- err - Error object on fail.
null
on success. - directoryTree - Object containing heirarchical directory data.
- err - Error object on fail.
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