Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
A tiny (195B to 220B) utility to recursively list all (total) files in a directory
The totalist npm package is a simple, fast utility to recursively list all files in a directory, or totalist. It is designed to be minimalistic and efficient, making it suitable for various applications where you need to process or handle files within a directory structure.
Recursively list all files
This feature allows you to recursively list all files in a specified directory. The callback function receives the name of each file, its absolute path, and its stats object, which includes properties like file size.
const { totalist } = require('totalist');
async function listFiles(dir) {
await totalist(dir, (name, abs, stats) => {
console.log(name, abs, stats.size);
});
}
listFiles('./path/to/directory');
The 'glob' package provides functionality to match files using the patterns the shell uses, like stars and stuff. It's more feature-rich than totalist, offering pattern matching and filtering capabilities, but it might be slower for simply listing all files due to the overhead of pattern matching.
Readdirp is another package that offers recursive directory reading with a stream API, making it suitable for handling large directories. It provides more options for filtering and handling entries than totalist, but it might be more complex to use for basic file listing tasks.
A tiny (195B to 224B) utility to recursively list all (total) files in a directory
Traverse a directory recursively, running a function for every file found.
With this module, you easily apply custom logic to decide which file(s) to process without worrying about accidentally accessing a directory or making repeat fs.Stats
requests.
$ npm install --save totalist
There are two "versions" of totalist
available:
Node.js: >= 8.x
Size (gzip): 220 bytes
Availability: CommonJS, ES Module
This is the primary/default mode. It makes use of async
/await
and util.promisify
.
Node.js: >= 6.x
Size (gzip): 195 bytes
Availability: CommonJS, ES Module
This is the opt-in mode, ideal for scenarios where async
usage cannot be supported.
Selecting a Mode
// import via npm module
import { totalist } from 'totalist';
import { totalist } from 'totalist/sync';
Example Usage
import { totalist } from 'totalist/sync';
const styles = new Set();
const scripts = new Set();
totalist('src', (name, abs, stats) => {
if (/\.js$/.test(name)) {
scripts.add(abs);
if (stats.size >= 100e3) {
console.warn(`[WARN] "${name}" might cause performance issues (${stats.size})`);
}
} else if (/\.css$/.test(name)) {
styles.add(abs);
}
});
console.log([...scripts]);
//=> [..., '/Users/lukeed/.../src/path/to/example.css', ...]
Returns: void
Important: The "async" usage must be
await
ed or included within a Promise chain.
Type: string
Required: true
The directory to traverse.
This may be a relative or an absolute path.
Note: Node.js will assume a relative path is meant to be resolved from the current location (
process.cwd()
).
Type: Function
Required: true
The callback function to run for every file.
The function receives three parameters:
Type: String
The path relative to the initial dir
value you provided.
Type: String
The absolute path of the file.
Type: fs.Stats
The fs.Stats
object for the file.
MIT © Luke Edwards
FAQs
A tiny (195B to 220B) utility to recursively list all (total) files in a directory
The npm package totalist receives a total of 5,930,348 weekly downloads. As such, totalist popularity was classified as popular.
We found that totalist demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.