# dir-to-json 
> Asynchronously convert directory tree structure into a JavaScript object.
## Getting Started
### Install
**Yarn:**
```shell
yarn add dir-to-json
```
**NPM:**
```shell
npm install dir-to-json --save
```
### Usage
```javascript
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`:
```javascript
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
```javascript
{
"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
- [NPM](https://www.npmjs.com/package/dir-to-json)
- [GitHub](https://github.com/traviswimer/dir-to-json)
## Author
#### Travis Wimer
- Developer Portfolio
- My Blog
- Dir-To-Json Portfolio Page
## License
MIT. Copyright © 2022 Travis Wimer