{"id":21513281,"url":"https://github.com/cn-tower/dir-parser","last_synced_at":"2025-07-29T16:43:32.134Z","repository":{"id":137643821,"uuid":"164153573","full_name":"CN-Tower/dir-parser","owner":"CN-Tower","description":"Parse a directory and generate it's structure tree. 文件夹分析工具，解析文件夹并生成内部文件信息及其文件树。可以使用命令行，也可以在js代码中使用。","archived":false,"fork":false,"pushed_at":"2023-04-03T03:16:06.000Z","size":1321,"stargazers_count":34,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-18T00:38:46.178Z","etag":null,"topics":["dir-parser","dir-tree","directory-parser","directory-tree","treely"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CN-Tower.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-04T20:51:43.000Z","updated_at":"2025-05-01T12:39:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"8cd30139-78e4-4aa9-a4e9-067589662933","html_url":"https://github.com/CN-Tower/dir-parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CN-Tower/dir-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fdir-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fdir-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fdir-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fdir-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CN-Tower","download_url":"https://codeload.github.com/CN-Tower/dir-parser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fdir-parser/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267718921,"owners_count":24133466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dir-parser","dir-tree","directory-parser","directory-tree","treely"],"created_at":"2024-11-23T22:56:23.191Z","updated_at":"2025-07-29T16:43:32.073Z","avatar_url":"https://github.com/CN-Tower.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e😎 Dir Parser v2 😎\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80%;\" src=\"images/demo.png\"\u003e\n\u003c/p\u003e\n\n# dir-parser\n\n[![npm](https://img.shields.io/npm/v/dir-parser.svg)](https://www.npmjs.com/package/dir-parser)\n[![LICENSE MIT](https://img.shields.io/npm/l/dir-parser.svg)](https://www.npmjs.com/package/dir-parser) \n[![NPM Downloads](https://img.shields.io/npm/dm/dir-parser.svg?style=flat)](https://npmcharts.com/compare/dir-parser?minimal=true)\n[![Install Size](https://packagephobia.now.sh/badge?p=dir-parser)](https://packagephobia.now.sh/result?p=dir-parser)\n\n\u003e Parse a directory and generate it's structure tree.\n\nRead this in other languages: English | [简体中文](./README_zh-CN.md)\n\n- [dir-parser](#dir-parser)\n  - [1. What is dir-parser](#1-what-is-dir-parser)\n    - [1.1 Introduction](#11-introduction)\n    - [1.2 Installation](#12-installation)\n  - [2. Command Line](#2-command-line)\n    - [2.1 Print help info](#21-print-help-info)\n    - [2.2 Generate dir-tree](#22-generate-dir-tree)\n    - [2.3 With parameters](#23-with-parameters)\n      - [2.3.1 excludes](#231-excludes)\n      - [2.3.2 ignores](#232-ignores)\n      - [2.3.3 glob](#233-glob)\n      - [2.3.4 patterns](#234-patterns)\n      - [2.3.5 lineType](#235-lineType)\n      - [2.3.6 depth](#236-depth)\n      - [2.3.7 reverse](#237-reverse)\n      - [2.3.8 fileFirst](#238-fileFirst)\n      - [2.3.9 fileOnly](#239-fileOnly)\n      - [2.3.10 dirOnly](#2310-dirOnly)\n      - [2.3.11 dirInfo](#2311-dirInfo)\n      - [2.3.12 excPaths](#2312-excPaths)\n      - [2.3.13 excPatterns](#2313-excPatterns)\n      - [2.3.14 silent](#2314-silent)\n      - [2.3.15 generate](#2315-generate)\n      - [2.3.16 config](#2316-config)\n    - [2.4 Use multiple commands together](#24-use-multiple-commands-together)\n  - [3. In JavaScript](#3-in-javascript)\n    - [3.1 Interface](#31-interface)\n      - [3.1.1 Main Function-parser](#311-main-function-parser)\n      - [3.1.2 Options](#312-options)\n      - [3.1.3 Parsed](#313-parsed)\n      - [3.1.4 DirInfo](#314-dirinfo)\n      - [3.1.5 FileInfo](#315-fileinfo)\n    - [3.2 Get dir-tree](#32-get-dir-tree)\n      - [3.2.1 Make dir-tree example](#321-make-dir-tree-example)\n      - [3.2.2 Run dir-tree example](#322-run-dir-tree-example)\n    - [3.3 Get dir-info](#33-get-dir-info)\n      - [3.3.1 Make dir-info example](#331-make-dir-info-example)\n      - [3.3.2 Run dir-info example](#332-run-dir-info-example)\n      - [3.3.3 Make dir-children example](#333-make-dir-children-example)\n      - [3.3.4 Run dir-children example](#334-run-dir-children-example)\n      - [3.3.5 Make dir-files example](#335-make-dir-files-example)\n      - [3.3.6 Run dir-files example](#336-run-dir-files-example)\n\n## 1. What is dir-parser\n\n### 1.1 Introduction\n👍👍👍Dir parser is a powerful folder analysis tool based on nodejs, which can be used in command line or JavaScript code. There are many practical parameters that can be set to help you get the formatted folder tree and internal information.\n\n### 1.2 Installation\n\n#### 1.2.1 Global install\n- yarn: `$ yarn global add dir-parser`\n- npm: `$ npm install -g dir-parser`\n\n#### 1.2.2 Local install\n- yarn: `$ yarn add dir-parser` or `$ yarn add dir-parser -D`\n- npm: `$ npm install dir-parser` or `$ npm install dir-parser -D`\n\n## 2. Command Line\n\n### 2.1 Print help info\n`$ parser -h` (or: `$ parser --help`)\n```\nUsage: parser [options]\n\nOptions:\n  -V, --version                   output the version number\n  -v, --version                   output the version number\n  -c, --config [config]           config file, Optional.\n  -i, --input \u003cinput\u003e             target directory (default: \"./\")\n  -o, --output \u003coutput\u003e           output path (default: \"./\")\n  -d, --depth \u003cdepth\u003e             depth of a parse process, 0 means no limit (default: 0)\n  -l, --lineType \u003clineType\u003e       line type of tree, \"dash\" or \"solid\" (default: \"solid\")\n  -e, --excludes \u003cexcludes..\u003e     exclude some directories or files by name.\n  -x, --excPaths \u003cexcPaths..\u003e     exclude directories or files by path.\n  -p, --patterns \u003cpatterns...\u003e    filter directories or files by RegExp.\n  -g, --generate [fileName]       generate a dir-info file to the output path, \"dir-info.txt\" is default.\n  -r, --reverse                   reverse the parsed dir-tree nodes.\n  -s, --silent                    not show the parsed dir-tree in terminal.\n  -f, --fileFirst                 print files first, before directories.\n  -F, --fileOnly                  pase files only.\n  -D, --dirOnly                   pase directories only, and it only takes effect when fileOnly is false.\n  -I, --ignores \u003cignores..\u003e       ignore some directories or files by name.\n  -N, --no-dirInfo                hide file and directory number info on the result top.\n  -G, --glob \u003cglob\u003e               filter files with glob patterns.\n  --paths \u003cpaths..\u003e               filter directories or files by path.\n  --includes \u003cincludes..\u003e         filter directories or files by name.\n  --excPatterns \u003cexcPatterns...\u003e  exclude directories or files by RegExp.\n  -H, --Help                      output chinese usage information.(打印中文帮助信息.)\n  -h, --help                      output usage information\n```\n\n### 2.2 Generate dir-tree\nTo run demo, you need to install `express-generator`:\u003cbr\u003e\nRun: \u003cbr\u003e\n`$ npm install -g express-generator`\u003cbr\u003e\n`$ express myapp`\u003cbr\u003e\n`$ cd myapp`\u003cbr\u003e\n`$ parser`\u003cbr\u003e\n```\nmyapp ( Directories: 7, Files: 9 )\n├── bin\n│   └── www\n├── public\n│   ├── images/\n│   ├── javascripts/\n│   └── stylesheets\n│       └── style.css\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n└── package.json\n```\n\n### 2.3 With parameters\n\n#### 2.3.1 excludes\n👉 Exclude some directories or files by name.\u003cbr\u003e\n`$ # git init`\u003cbr\u003e\n`$ npm install`\u003cbr\u003e\n`$ parser -e .git,node_modules,public`\u003cbr\u003e\nor: `$ parser --excludes .git,node_modules,public`\n```\nmyapp ( Directories: 3, Files: 9 )\n├── bin\n│   └── www\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── package-lock.json\n└── package.json\n```\nName has white space:\u003cbr\u003e\n`$ touch 'white space.txt'`\u003cbr\u003e\n`$ parser -e '[\".git\", \"node_modules\", \"public\", \"white space.txt\"]'`\u003cbr\u003e\n`$ rm -rf white\\ space.txt`\n```\nmyapp ( Directories: 3, Files: 9 )\n├── bin\n│   └── www\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.2 ignores\n👉 Ignore some directories or files by name.\u003cbr\u003e\n`$ parser -e node_modules -I bin,public`\u003cbr\u003e\nor: `$ parser -e node_modules --ignores bin,public`\n```\nmyapp ( Directories: 4, Files: 8 )\n├── bin/\n├── public/\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.3 glob\n👉 Filter by glob pattern. Note: glob pattern must be enclosed in quotation marks \u003cbr\u003e\n`$ parser -e node_modules -G '**/*.js'`\u003cbr\u003e\nor: `$ parser -e node_modules --glob '**/*.js'`\n```\nmyapp ( Directories: 1, Files: 3 )\n├── routes\n│   ├── index.js\n│   └── users.js\n└── app.js\n```\n\n#### 2.3.4 patterns\n👉 Filter directories or files by RegExp.\u003cbr\u003e\n`$ parser -e node_modules -p .js$`\u003cbr\u003e\nor: `$ parser -e node_modules --patterns .js$`\n```\nmyapp ( Directories: 1, Files: 3 )\n├── routes\n│   ├── index.js\n│   └── users.js\n└── app.js\n```\n\n#### 2.3.5 lineType\n👉 Line type of tree, \"dash\" or \"solid\" (default: \"solid\")\u003cbr\u003e\n`$ parser -e bin,node_modules -l dash`\u003cbr\u003e\nor: `$ parser -e bin,node_modules --lineType dash`\n```\nmyapp ( Directories: 6, Files: 9 )\n+-- public\n¦   +-- images/\n¦   +-- javascripts/\n¦   +-- stylesheets\n¦       +-- style.css\n+-- routes\n¦   +-- index.js\n¦   +-- users.js\n+-- views\n¦   +-- error.jade\n¦   +-- index.jade\n¦   +-- layout.jade\n+-- app.js\n+-- package-lock.json\n+-- package.json\n```\n\n#### 2.3.6 depth\n👉 Depth of a parse process, 0 means no limit (default: 0)\u003cbr\u003e\n`$ parser -e node_modules,views -d 2`\u003cbr\u003e\nor: `$ parser -e node_modules,views --depth 2`\n```\nmyapp ( Directories: 6, Files: 6 )\n├── bin\n│   └── www\n├── public\n│   ├── images/\n│   ├── javascripts/\n│   └── stylesheets/*\n├── routes\n│   ├── index.js\n│   └── users.js\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.7 reverse\n👉 Reverse the parsed dir-tree nodes.\u003cbr\u003e\n`$ parser -e node_modules,views -d 2 -r`\u003cbr\u003e\nor: `$ parser -e node_modules,views -d 2 --reverse`\n```\nmyapp ( Directories: 6, Files: 6 )\n├── routes\n│   ├── users.js\n│   └── index.js\n├── public\n│   ├── stylesheets/*\n│   ├── javascripts/\n│   └── images/\n├── bin\n│   └── www\n├── package.json\n├── package-lock.json\n└── app.js\n```\n\n#### 2.3.8 fileFirst\n👉 Print files first, before directories.\u003cbr\u003e\n`$ parser -e node_modules,bin,views -f`\u003cbr\u003e\nor: `$ parser -e node_modules,bin,views --fileFirst`\n```\nmyapp ( Directories: 5, Files: 6 )\n├── app.js\n├── package-lock.json\n├── package.json\n├── public\n│   ├── images/\n│   ├── javascripts/\n│   └── stylesheets\n│       └── style.css\n└── routes\n    ├── index.js\n    └── users.js\n```\n\n#### 2.3.9 fileOnly\n👉 Pase files only.\u003cbr\u003e\n`$ parser -e node_modules,bin,views -F`\u003cbr\u003e\nor: `$ parser -e node_modules,bin,views --fileOnly`\n```\nmyapp ( Directories: 3, Files: 6 )\n├── public\n│   └── stylesheets\n│       └── style.css\n├── routes\n│   ├── index.js\n│   └── users.js\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.10 dirOnly\n👉 Pase directories only, and it only takes effect when fileOnly is false.\u003cbr\u003e\n`$ parser -e node_modules,bin,views -D`\u003cbr\u003e\nor: `$ parser -e node_modules,bin,views --dirOnly`\n```\nmyapp ( Directories: 5 )\n├── public\n│   ├── images/\n│   ├── javascripts/\n│   └── stylesheets/\n└── routes/\n```\n\n#### 2.3.11 dirInfo\n👉 Hide file and directory number info on the result top.\u003cbr\u003e\n`$ parser -e node_modules,bin,public -N`\u003cbr\u003e\nor: `$ parser -e node_modules,bin,public --no-dirInfo`\n```\nmyapp\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.12 excPaths\n👉 Exclude directories or files by path.\u003cbr\u003e\n`$ parser -e node_modules,bin -x myapp/public`\u003cbr\u003e\nor: `$ parser -e node_modules,bin -excPath myapp/public`\n```\nmyapp ( Directories: 2, Files: 8 )\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.13 excPatterns\n👉 Exclude directories or files by RegExp.\u003cbr\u003e\n`$ parser -e node_modules,bin --excPatterns .jade$,.css$`\n```\nmyapp ( Directories: 6, Files: 5 )\n├── public\n│   ├── images/\n│   ├── javascripts/\n│   └── stylesheets/\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views/\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.14 silent\n👉 Not show the parsed dir-tree in terminal.\u003cbr\u003e\n`$ parser -e node_modules,bin,public -s`\u003cbr\u003e\nor: `$ parser -e node_modules,bin,public --silent`\n\n#### 2.3.15 generate\n👉 Generate a dir-info file to the output path, \"dir-info.txt\" is default.\u003cbr\u003e\n`$ parser -e node_modules,bin,public -sg`\u003cbr\u003e\nor: `$ parser -e node_modules,bin,public -s --generate`\u003cbr\u003e\n`$ cat dir-info.txt`\n```\nmyapp ( Directories: 2, Files: 8 )\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── package-lock.json\n└── package.json\n```\n\n#### 2.3.16 config\n👉 Config file, Optional.\u003cbr\u003e\n`$ touch parser.conf.json`\u003cbr\u003e\n`$ vi parser.conf.json`\n```json\n{\n  \"directory\": \"./\",\n  \"excludes\": [ \".git\", \"node_modules\", \"bin\", \"public\", \"parser.conf.json\" ],\n  \"depth\": \"2\",\n  \"generate\": \"info.txt\"\n}\n```\n`$ parser -c ./parser.conf.json`\n```\nmyapp ( Directories: 2, Files: 9 )\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── dir-info.txt\n├── package-lock.json\n└── package.json\n```\n\n### 2.4 Use multiple commands together\n`parser -e node_modules,bin -I views -d 2 -Nr`\n```\nmyapp\n├── views/\n├── routes\n│   ├── users.js\n│   └── index.js\n├── public\n│   ├── stylesheets/*\n│   ├── javascripts/\n│   └── images/\n├── parser.conf.json\n├── package.json\n├── package-lock.json\n├── info.txt\n├── dir-info.txt\n└── app.js\n```\n\n## 3. In JavaScript\n\n### 3.1 Interface\n\n#### 3.1.1 Main Function-parser\n```ts\nparser(dirPath: string, options: Options): Promise\u003cParsed\u003e\n```\n\n#### 3.1.2 Options\n```ts\ninterface Options {             \n  depth?: number;\n  reverse?: boolean;\n  fileFirst?: boolean;\n  fileOnly?: boolean;\n  dirOnly?: boolean;\n  getFiles?: boolean;\n  getChildren?: boolean;\n  dirTree?: boolean;             // default: true\n  dirInfo?: boolean;             // default: true\n  lineType?: 'solid' | 'dash'; // default: 'solid'\n  excludes?: Array\u003cstring\u003e;      // eg: [ '.git', 'node_modules', '.idea' ];\n  excPaths?: Array\u003cstring\u003e;      // eg: [ 'src/app' ];\n  excPatterns?: Array\u003cstring\u003e;   // eg: [ 'src/*.js ]';\n  ignores: Array\u003cstring\u003e;        // eg: [ 'public' ];\n  includes: Array\u003cstring\u003e;       // eg: [ 'app.js' ];\n  paths?: Array\u003cstring\u003e;         // eg: [ 'src/public' ];\n  patterns?: Array\u003cstring\u003e;      // eg: [ '*.js ]';\n  glob?: string;                 // eg: '**/*.js';\n}\n```\n#### 3.1.3 Parsed\n```ts\ninterface Parsed extends DirInfo {\n  dirTree: string;\n  children: Array\u003cDirInfo | FileInfo\u003e\n  files: Array\u003cFileInfo\u003e\n}\n```\n\n#### 3.1.4 DirInfo\n```ts\ninterface DirInfo {\n  name: string;\n  type: 'directory';\n  size: number;\n  size_kb: number;\n  path: string;\n  absPath: string;\n  dir: string;\n  absDir: string;\n  dirNum: number;\n  fileNum: number;\n  children: Array\u003cDirInfo | FileInfo\u003e\n}\n```\n\n#### 3.1.5 FileInfo\n```ts\ninterface FileInfo {\n  name: string;\n  base: string;\n  ext: string;\n  type: 'file';\n  size: number;\n  size_kb: number;\n  path: string;\n  absPath: string;\n  dir: string;\n  absDir: string;\n}\n```\n\n### 3.2 Get dir-tree\n\n#### 3.2.1 Make dir-tree example\n`$ npm install dir-parser funclib`\u003cbr\u003e\n`$ touch test.js`\u003cbr\u003e\n`$ vi test.js`\u003cbr\u003e\n```js\nconst fn = require('funclib');\nconst parser = require('dir-parser');\n\nparser('./', {\n  excludes: ['.git', 'node_modules'],\n  // lineType: 'dash',\n  // fileFirst: true,\n}).then(parsed =\u003e {\n  fn.log(parsed.dirTree, '# parsed.dirTree');\n\n  // fn.log(fn.pick(parsed, prop =\u003e prop !== 'dirTree'), '# parsed result info');\n  // fn.log(parsed.children, '# parsed.children');\n  // fn.log(parsed.files, '# parsed.files');\n});\n```\n\n#### 3.2.2 Run dir-tree example\n`$ node test.js`\n```\n==================================================================\n                  [09:48:55] # parsed.dirTree\n------------------------------------------------------------------\nmyapp\n├── bin\n│   └── www\n├── public\n│   ├── images/\n│   ├── javascripts/\n│   └── stylesheets\n│       └── style.css\n├── routes\n│   ├── index.js\n│   └── users.js\n├── views\n│   ├── error.jade\n│   ├── index.jade\n│   └── layout.jade\n├── app.js\n├── dir-info.txt\n├── info.txt\n├── package-lock.json\n├── package.json\n├── parser.conf.json\n└── test.js\n==================================================================\n```\n\n### 3.3 Get dir-info\n\n#### 3.3.1 Make dir-info example \n`$ vi test.js`\n```js\nparser('./', {\n  excludes: ['.git', 'node_modules'],\n  // lineType: 'dash',\n  // fileFirst: true,\n}).then(parsed =\u003e {\n  console.log(fn.pretty(fn.pick(parsed, prop =\u003e prop !== 'dirTree')));\n  \n  // fn.log(parsed.dirTree, '# parsed.dirTree');\n  // fn.log(parsed.children, '# parsed.children');\n  // fn.log(parsed.files, '# parsed.files');\n});\n```\n#### 3.3.2 Run dir-info example \n`$ node test.js`\n```json\n{\n  \"name\": \"myapp\",\n  \"type\": \"directory\",\n  \"path\": \"./\",\n  \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp\",\n  \"dir\": \".\",\n  \"absDir\": \"/Users/cntower/code/@cntower/dir-parser\",\n  \"dirNum\": 7,\n  \"fileNum\": 14\n}\n```\n\n#### 3.3.3 Make dir-children example \n`$ vi test.js`\n```js\nparser('./', {\n  excludes: ['.git', 'node_modules', 'public'],\n  getFiles: true,    // Default is false, If true, returns will conatins an array of all subfiles's info;\n  getChildren: true, // Default is false, If true, returns will conatins an object of all children's info;\n  dirTree: false     // Default is true, returns will conatins a tree of the directory;\n}).then(parsed =\u003e {\n  console.log(fn.pretty(parsed.children));\n  // fn.log(parsed.files, '# parsed.files');\n});\n```\n\n#### 3.3.4 Run dir-children example \n`$ node test.js`\n```json\n[\n  {\n    \"name\": \"bin\",\n    \"type\": \"directory\",\n    \"size\": 1591,\n    \"size_kb\": \"1.55kb\",\n    \"path\": \"bin\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/bin\",\n    \"dir\": \".\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\",\n    \"dirNum\": 0,\n    \"fileNum\": 1,\n    \"children\": [\n      {\n        \"name\": \"www\",\n        \"base\": \"www\",\n        \"ext\": \"\",\n        \"type\": \"file\",\n        \"size\": 1591,\n        \"size_kb\": \"1.55kb\",\n        \"path\": \"bin/www\",\n        \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/bin/www\",\n        \"dir\": \"bin\",\n        \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/bin\"\n      }\n    ]\n  },\n  {\n    \"name\": \"routes\",\n    \"type\": \"directory\",\n    \"size\": 408,\n    \"size_kb\": \"0.4kb\",\n    \"path\": \"routes\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes\",\n    \"dir\": \".\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\",\n    \"dirNum\": 0,\n    \"fileNum\": 2,\n    \"children\": [\n      {\n        \"name\": \"index.js\",\n        \"base\": \"index\",\n        \"ext\": \".js\",\n        \"type\": \"file\",\n        \"size\": 205,\n        \"size_kb\": \"0.2kb\",\n        \"path\": \"routes/index.js\",\n        \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes/index.js\",\n        \"dir\": \"routes\",\n        \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes\"\n      },\n      {\n        \"name\": \"users.js\",\n        \"base\": \"users\",\n        \"ext\": \".js\",\n        \"type\": \"file\",\n        \"size\": 203,\n        \"size_kb\": \"0.2kb\",\n        \"path\": \"routes/users.js\",\n        \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes/users.js\",\n        \"dir\": \"routes\",\n        \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes\"\n      }\n    ]\n  },\n  {\n    \"name\": \"app.js\",\n    \"base\": \"app\",\n    \"ext\": \".js\",\n    \"type\": \"file\",\n    \"size\": 1075,\n    \"size_kb\": \"1.05kb\",\n    \"path\": \"app.js\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/app.js\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"dir-info.txt\",\n    \"base\": \"dir-info\",\n    \"ext\": \".txt\",\n    \"type\": \"file\",\n    \"size\": 277,\n    \"size_kb\": \"0.27kb\",\n    \"path\": \"dir-info.txt\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/dir-info.txt\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"info.txt\",\n    \"base\": \"info\",\n    \"ext\": \".txt\",\n    \"type\": \"file\",\n    \"size\": 301,\n    \"size_kb\": \"0.29kb\",\n    \"path\": \"info.txt\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/info.txt\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"package-lock.json\",\n    \"base\": \"package-lock\",\n    \"ext\": \".json\",\n    \"type\": \"file\",\n    \"size\": 68550,\n    \"size_kb\": \"66.94kb\",\n    \"path\": \"package-lock.json\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/package-lock.json\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"package.json\",\n    \"base\": \"package\",\n    \"ext\": \".json\",\n    \"type\": \"file\",\n    \"size\": 347,\n    \"size_kb\": \"0.34kb\",\n    \"path\": \"package.json\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/package.json\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"parser.conf.json\",\n    \"base\": \"parser.conf\",\n    \"ext\": \".json\",\n    \"type\": \"file\",\n    \"size\": 145,\n    \"size_kb\": \"0.14kb\",\n    \"path\": \"parser.conf.json\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/parser.conf.json\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"test.js\",\n    \"base\": \"test\",\n    \"ext\": \".js\",\n    \"type\": \"file\",\n    \"size\": 554,\n    \"size_kb\": \"0.54kb\",\n    \"path\": \"test.js\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/test.js\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  }\n]\n```\n\n#### 3.3.5 Make dir-files example \n`$ vi test.js`\n```js\nparser('./', {\n  excludes: ['.git', 'node_modules', 'public'],\n  getFiles: true,\n  getChildren: true,\n  dirTree: false\n}).then(parsed =\u003e {\n  // fn.log(parsed.children, '# parsed.children');\n  console.log(fn.pretty(parsed.files));\n});\n```\n\n#### 3.3.6 Run dir-files example \n`$ node test.js`\n```json\n[\n  {\n    \"name\": \"www\",\n    \"base\": \"www\",\n    \"ext\": \"\",\n    \"type\": \"file\",\n    \"size\": 1591,\n    \"size_kb\": \"1.55kb\",\n    \"path\": \"bin/www\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/bin/www\",\n    \"dir\": \"bin\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/bin\"\n  },\n  {\n    \"name\": \"index.js\",\n    \"base\": \"index\",\n    \"ext\": \".js\",\n    \"type\": \"file\",\n    \"size\": 205,\n    \"size_kb\": \"0.2kb\",\n    \"path\": \"routes/index.js\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes/index.js\",\n    \"dir\": \"routes\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes\"\n  },\n  {\n    \"name\": \"users.js\",\n    \"base\": \"users\",\n    \"ext\": \".js\",\n    \"type\": \"file\",\n    \"size\": 203,\n    \"size_kb\": \"0.2kb\",\n    \"path\": \"routes/users.js\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes/users.js\",\n    \"dir\": \"routes\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/routes\"\n  },\n  {\n    \"name\": \"error.jade\",\n    \"base\": \"error\",\n    \"ext\": \".jade\",\n    \"type\": \"file\",\n    \"size\": 84,\n    \"size_kb\": \"0.08kb\",\n    \"path\": \"views/error.jade\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/views/error.jade\",\n    \"dir\": \"views\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/views\"\n  },\n  {\n    \"name\": \"index.jade\",\n    \"base\": \"index\",\n    \"ext\": \".jade\",\n    \"type\": \"file\",\n    \"size\": 66,\n    \"size_kb\": \"0.06kb\",\n    \"path\": \"views/index.jade\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/views/index.jade\",\n    \"dir\": \"views\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/views\"\n  },\n  {\n    \"name\": \"layout.jade\",\n    \"base\": \"layout\",\n    \"ext\": \".jade\",\n    \"type\": \"file\",\n    \"size\": 125,\n    \"size_kb\": \"0.12kb\",\n    \"path\": \"views/layout.jade\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/views/layout.jade\",\n    \"dir\": \"views\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp/views\"\n  },\n  {\n    \"name\": \"app.js\",\n    \"base\": \"app\",\n    \"ext\": \".js\",\n    \"type\": \"file\",\n    \"size\": 1075,\n    \"size_kb\": \"1.05kb\",\n    \"path\": \"app.js\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/app.js\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"dir-info.txt\",\n    \"base\": \"dir-info\",\n    \"ext\": \".txt\",\n    \"type\": \"file\",\n    \"size\": 277,\n    \"size_kb\": \"0.27kb\",\n    \"path\": \"dir-info.txt\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/dir-info.txt\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"info.txt\",\n    \"base\": \"info\",\n    \"ext\": \".txt\",\n    \"type\": \"file\",\n    \"size\": 301,\n    \"size_kb\": \"0.29kb\",\n    \"path\": \"info.txt\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/info.txt\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"package-lock.json\",\n    \"base\": \"package-lock\",\n    \"ext\": \".json\",\n    \"type\": \"file\",\n    \"size\": 68550,\n    \"size_kb\": \"66.94kb\",\n    \"path\": \"package-lock.json\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/package-lock.json\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"package.json\",\n    \"base\": \"package\",\n    \"ext\": \".json\",\n    \"type\": \"file\",\n    \"size\": 347,\n    \"size_kb\": \"0.34kb\",\n    \"path\": \"package.json\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/package.json\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"parser.conf.json\",\n    \"base\": \"parser.conf\",\n    \"ext\": \".json\",\n    \"type\": \"file\",\n    \"size\": 145,\n    \"size_kb\": \"0.14kb\",\n    \"path\": \"parser.conf.json\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/parser.conf.json\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  },\n  {\n    \"name\": \"test.js\",\n    \"base\": \"test\",\n    \"ext\": \".js\",\n    \"type\": \"file\",\n    \"size\": 303,\n    \"size_kb\": \"0.3kb\",\n    \"path\": \"test.js\",\n    \"absPath\": \"/Users/cntower/code/@cntower/dir-parser/myapp/test.js\",\n    \"dir\": \"\",\n    \"absDir\": \"/Users/cntower/code/@cntower/dir-parser/myapp\"\n  }\n]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-tower%2Fdir-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcn-tower%2Fdir-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-tower%2Fdir-parser/lists"}