totalist v3.0.1
totalist

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.
Install
$ npm install --save totalistModes
There are two "versions" of totalist available:
"async"
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.
"sync"
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.
Usage
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', ...]API
totalist(dir, callback)
Returns: void
Important: The "async" usage must be
awaited or included within a Promise chain.
dir
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()).
callback
Type: Function
Required: true
The callback function to run for every file.
The function receives three parameters:
relPath
Type: String
The path relative to the initial dir value you provided.
absPath
Type: String
The absolute path of the file.
stats
Type: fs.Stats
The fs.Stats object for the file.
License
MIT © Luke Edwards