Skip to content

🌲 Node.js library to list the contents of directories in a tree-like format, similar to the Linux tree command

License

Notifications You must be signed in to change notification settings

yangshun/tree-node-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

79 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

tree-node-cli

Lists the contents of directories in a tree-like format, similar to the Linux tree command. Both CLI and Node APIs are provided.

tree is a command that produces a nicely-formatted indented output of directories and files. When a directory argument is given, tree lists all the files and/or directories found in the given directory.

Note: Symlinks are not followed.

Quickstart

Instantly execute the command in your current directory via npx:

npx tree-node-cli -I "node_modules" # ignore node_modules

Or via Yarn 2+:

yarn dlx -p tree-node-cli tree -I "node_modules" # ignore node_modules

Installation

$ npm install tree-node-cli
# or globally
$ npm install -g tree-node-cli

Example

$ tree -L 2 -I "node_modules"
tree-node-cli
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
β”œβ”€β”€ __tests__
β”‚   β”œβ”€β”€ __fixtures__
β”‚   β”œβ”€β”€ __snapshots__
β”‚   β”œβ”€β”€ fixtures
β”‚   └── tree.test.js
β”œβ”€β”€ bin
β”‚   └── tree
β”œβ”€β”€ jest.config.js
β”œβ”€β”€ package.json
β”œβ”€β”€ tree.js
└── yarn.lock

CLI

$ tree [options] [path/to/dir]

Note: Use the command treee on Windows and Linux to avoid conflicts with built-in tree command.

The following options are available:

$ tree -h

  Usage: tree [options]

  Options:

    -V, --version             output the version number
    -a, --all-files           All files, include hidden files, are printed.
    --dirs-first              List directories before files.
    -d, --dirs-only           List directories only.
    -s, --sizes               Show filesizes.
    -I, --exclude [patterns]  Exclude files that match the pattern. | separates alternate patterns. Wrap your entire pattern in double quotes. E.g. `"node_modules|coverage".
    -L, --max-depth <n>       Max display depth of the directory tree.
    -r, --reverse             Sort the output in reverse alphabetic order.
    -F, --trailing-slash      Append a '/' for directories.
    -S, --line-ascii          Turn on ASCII line graphics.
    -h, --help                output usage information

Node.js API

const tree = require('tree-node-cli');
const string = tree('path/to/dir', options);

options is a configuration object with the following fields:

Field Default Type Description
allFiles false Boolean All files are printed. By default, tree does not print hidden files (those beginning with a dot).
dirsFirst false Boolean List directories before files.
dirsOnly false Boolean List directories only.
sizes false Boolean Show filesizes as well.
exclude [] Array An array of regex to test each filename against. Matching files will be excluded and matching directories will not be traversed into.
maxDepth Number.POSITIVE_INFINITY Number Max display depth of the directory tree.
reverse false Boolean Sort the output in reverse alphabetic order.
trailingSlash false Boolean Appends a trailing slash behind directories.
lineAscii false Boolean Turn on ASCII line graphics.
const string = tree('path/to/dir', {
  allFiles: true,
  exclude: [/node_modules/, /lcov/],
  maxDepth: 4,
});

console.log(string);

Note: To exclude the contents of a directory while retaining the directory itself, use a trailing slash with the -I option (e.g., -I "node_modules/"). For the Node.js API, provide a regex matching the directory contents (e.g., /node_modules\//). See Issue #33 for more details.

License

MIT

About

🌲 Node.js library to list the contents of directories in a tree-like format, similar to the Linux tree command

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published