Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
directory-tree
Advanced tools
The directory-tree npm package is a utility for generating a nested directory structure in JSON format. It is useful for visualizing and working with file system hierarchies in a programmatic way.
Generate Directory Tree
This feature allows you to generate a JSON representation of a directory structure starting from a specified path. The code sample demonstrates how to use the package to create a directory tree and print it in a readable JSON format.
const dirTree = require('directory-tree');
const tree = dirTree('/some/path');
console.log(JSON.stringify(tree, null, 2));
Filter by File Extensions
This feature allows you to filter the files included in the directory tree by their extensions. The code sample shows how to generate a directory tree that only includes Markdown and JavaScript files.
const dirTree = require('directory-tree');
const tree = dirTree('/some/path', { extensions: /\.(md|js)$/ });
console.log(JSON.stringify(tree, null, 2));
Exclude Specific Paths
This feature allows you to exclude specific paths from the directory tree. The code sample demonstrates how to exclude the 'node_modules' directory from the generated tree.
const dirTree = require('directory-tree');
const tree = dirTree('/some/path', { exclude: /node_modules/ });
console.log(JSON.stringify(tree, null, 2));
Readdirp is a recursive version of fs.readdir with additional features like filtering and streaming. It provides more control over the file reading process compared to directory-tree, which is more focused on generating a static JSON structure.
Klaw is a file system walker that streams file paths as it traverses directories. It offers more flexibility and streaming capabilities compared to directory-tree, which is primarily used for generating a complete directory snapshot in JSON format.
Fs-extra extends the native Node.js fs module with additional methods, including recursive directory operations. While it doesn't directly generate directory trees, it provides utilities that can be used to build similar functionality with more manual control.
Creates a JavaScript object representing a directory tree.
$ npm install directory-tree
const dirTree = require("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("directory-tree");
const filteredTree = dirTree("/some/path", { extensions: /\.txt/ });
Example for filtering multiple extensions with Regex.
const dirTree = require("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("directory-tree");
const filteredTree = dirTree("/some/path", { exclude: /some_path_to_exclude/ });
A callback function can be executed with each file that matches the extensions provided:
const PATH = require("path");
const dirTree = require("directory-tree");
const tree = dirTree(
"./test/test_data",
{ extensions: /\.txt$/ },
(item, PATH) => {
console.log(item);
}
);
The callback function takes the directory item (has path, name, size, and extension) and an instance of node path.
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 \).
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"
}
]
}
]
}
]
}
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.
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 .
)
This project requires at least Node v4.2.
Check out version 0.1.1
if you need support for older versions of Node.
FAQs
Convert a directory tree to a JS object.
The npm package directory-tree receives a total of 79,103 weekly downloads. As such, directory-tree popularity was classified as popular.
We found that directory-tree demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.