|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # totalist [](https://github.com/lukeed/totalist/actions) [](https://codecov.io/gh/lukeed/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 totalist
- ```
-
-
- ## Modes
-
- There are two "versions" of `totalist` available:
-
- #### "async"
- > **Node.js:** >= 8.x<br>
- > **Size (gzip):** 220 bytes<br>
- > **Availability:** [CommonJS](https://unpkg.com/totalist/dist/index.js), [ES Module](https://unpkg.com/totalist/dist/index.mjs)
-
- This is the primary/default mode. It makes use of `async`/`await` and [`util.promisify`](https://nodejs.org/api/util.html#util_util_promisify_original).
-
- #### "sync"
- > **Node.js:** >= 6.x<br>
- > **Size (gzip):** 195 bytes<br>
- > **Availability:** [CommonJS](https://unpkg.com/totalist/sync/index.js), [ES Module](https://unpkg.com/totalist/sync/index.mjs)
-
- This is the opt-in mode, ideal for scenarios where `async` usage cannot be supported.
-
-
- ## Usage
-
- ***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', ...]
- ```
-
-
- ## API
-
- ### totalist(dir, callback)
- Returns: `void`
-
- > **Important:** The "async" usage must be `await`ed or included within a Promise chain.
-
- #### dir
- Type: `string`<br>
- 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`<br>
- Required: `true`
-
- The callback function to run for _every_ file.
-
- The function receives three parameters:
-
- ##### relPath
- Type: `String`<br>
- The path _relative to_ the initial `dir` value you provided.
-
- ##### absPath
- Type: `String`<br>
- The absolute path of the file.
-
- ##### stats
- Type: `fs.Stats`<br>
- The [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object for the file.
-
-
- ## License
-
- MIT © [Luke Edwards](https://lukeed.com)
|