Skip to content

reanote/tree-files

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

tree-files

Creates a JavaScript object representing a directory tree.

Install

$ npm install tree-files

Usage

const dirTree = require("tree-files");
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("tree-files");
const filteredTree = dirTree("/some/path", { extensions: /\.txt/ });

Example for filtering multiple extensions with Regex.

const dirTree = require("tree-files");
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("tree-files");
const filteredTree = dirTree("/some/path", { exclude: /some_path_to_exclude/ });

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

```js
const PATH = require("path");
const dirTree = require("tree-files");

const tree = dirTree(
  "./test/test_data",
  { extensions: /\.txt$/ },
  (item, PATH) => {
       console.log('file info:', JSON.stringify(item));
  },
  (item, Path) => {
       console.log('directory info:', JSON.stringify(item));
  }
);

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

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.

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

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 v4.2. Check out version 0.1.1 if you need support for older versions of Node.

About

Convert a directory tree to a JS object.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%