Skip to content

A tiny (195B to 224B) utility to recursively list all (total) files in a directory

License

Notifications You must be signed in to change notification settings

lukeed/totalist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

totalist build status codecov

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
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

About

A tiny (195B to 224B) utility to recursively list all (total) files in a directory

Resources

License

Stars

Watchers

Forks