3v324v23's picture
Add PNG files and track with Git LFS
befd7da

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 dir-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) - 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