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): 224 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