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

af2951d Β· Dec 5, 2024

History

79 Commits
Feb 6, 2022
Nov 29, 2024
Feb 9, 2022
May 12, 2018
Apr 5, 2020
May 11, 2018
Dec 5, 2024
May 11, 2018
Oct 26, 2022
Feb 9, 2022
Oct 26, 2022

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