Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

async-directory-tree

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-directory-tree

Convert a directory tree to a JS object asynchronously.

  • 2.3.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
increased by100%
Maintainers
1
Weekly downloads
 
Created
Source

async-directory-tree

fork of awesome https://github.com/mihneadb/node-directory-tree. Almost all of the work is done by Mihnea Dobrescu-Balaur

Creates a JavaScript object representing a directory tree.

Install

$ npm install async-directory-tree

Usage

const dirTree = require("async-directory-tree");
const tree = dirTree("/some/path");

And you can also filter by an extensions regex: This is useful for including only certain types of files.

const dirTree = require("async-directory-tree");
const filteredTree = dirTree("/some/path", { extensions: /\.txt/ });

Example for filtering multiple extensions with Regex.

const dirTree = require("async-directory-tree");
const filteredTree = dirTree("/some/path", {
  extensions: /\.(md|js|html|java|py|rb)$/
});

You can also exclude paths from the tree using a regex:

const dirTree = require("async-directory-tree");
const filteredTree = dirTree("/some/path", { exclude: /some_path_to_exclude/ });

You can also specify which additional attributes you would like to be included about each file/directory:

const dirTree = require('async-directory-tree');
const filteredTree = dirTree('/some/path', {attributes:['mode', 'mtime']});

The default attributes are [name, size, extension, path] for Files and [name, size, path] for Directories

A callback function can be executed with each file that matches the extensions provided:

const PATH = require('path');
const dirTree = require('async-directory-tree');

const tree = dirTree('./test/test_data', {extensions:/\.txt$/}, (item, PATH, stats) => {
	console.log(item);
});

The callback function takes the directory item (has path, name, size, and extension) and an instance of node path and an instance of node FS.stats.

You can also pass a callback function for directories:

const PATH = require('path');
const dirTree = require('async-directory-tree');

const tree = dirTree('./test/test_data', {extensions:/\.txt$/}, null, (item, PATH, stats) => {
	console.log(item);
});

Options

exclude : RegExp|RegExp[] - A RegExp or an array of RegExp to test for exlusion of directories.

extensions : RegExp - A RegExp to test for exclusion of files with the matching extension.

attributes : string[] - Array of FS.stats attributes.

normalizePath : Boolean - If true, windows style paths will be normalized to unix style pathes (/ instead of \).

Result

Given a directory structured like this:

photos
├── summer
│   └── june
│       └── windsurf.jpg
└── winter
    └── january
        ├── ski.png
        └── snowboard.jpg

async-directory-tree will return this JS object:

{
  "path": "photos",
  "name": "photos",
  "size": 600,
  "type": "directory",
  "children": [
    {
      "path": "photos/summer",
      "name": "summer",
      "size": 400,
      "type": "directory",
      "children": [
        {
          "path": "photos/summer/june",
          "name": "june",
          "size": 400,
          "type": "directory",
          "children": [
            {
              "path": "photos/summer/june/windsurf.jpg",
              "name": "windsurf.jpg",
              "size": 400,
              "type": "file",
              "extension": ".jpg"
            }
          ]
        }
      ]
    },
    {
      "path": "photos/winter",
      "name": "winter",
      "size": 200,
      "type": "directory",
      "children": [
        {
          "path": "photos/winter/january",
          "name": "january",
          "size": 200,
          "type": "directory",
          "children": [
            {
              "path": "photos/winter/january/ski.png",
              "name": "ski.png",
              "size": 100,
              "type": "file",
              "extension": ".png"
            },
            {
              "path": "photos/winter/january/snowboard.jpg",
              "name": "snowboard.jpg",
              "size": 100,
              "type": "file",
              "extension": ".jpg"
            }
          ]
        }
      ]
    }
  ]
}

Note

Device, FIFO and socket files are ignored.

Files to which the user does not have permissions are included in the directory tree, however, directories to which the user does not have permissions, along with all of its contained files, are completely ignored.

Dev

To run tests go the package root in your CLI and run,

$ npm test

Make sure you have the dev dependencies installed (e.g. npm install .)

Node version

This project requires at least Node v10.x

Keywords

FAQs

Package last updated on 18 Feb 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc