A tiny (195B to 220B) utility to recursively list all (total) files in a directory
npm install 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.
```
$ npm install --save totalist
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.
Selecting a Mode
`js`
// import via npm module
import { totalist } from 'totalist';
import { totalist } from 'totalist/sync';
Example Usage
`js
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', ...]
`
> Important: The "async" usage must be
awaited or included within a Promise chain.#### dir
Type:
string
Required: trueThe 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: trueThe 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.MIT © Luke Edwards