3.0.1 • Published 2 years ago

totalist v3.0.1

Weekly downloads
897,770
License
MIT
Repository
github
Last release
2 years ago

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

svazzlegql_din_modunblock-block-save-variables@infinitebrahmanuniverse/nolb-tot@everything-registry/sub-chunk-2961@mediakular/svelte-data-gridkjistik-fixed-component-libraryphone-morkuptaleempresentationsvelte-searchable-selectsvelvet-customtest-pleasewrenchnpm-ui-componentsteapackage-tatespoorman297testapatest-results-parsersvelte-crypt-text@percent/percent-api-hooksip-designlanj-test-componentsnextjs-storieskjistik-component-librarysummerseatestltehmusimhujan@adam-lynch/sirv@adfinitas.fr/adfinitas-ui@codesoup/floating-menu@codesoup/scroll-to-top@darwishdev/dash-dev@gratrockstar/native-dialog-component@haysquare/svelte-multi-select@haysquare/svelte-multiselect@hproinformatica/functions@icetee/react-recaptcha-v3@eki-group/svelvet@insertish/sirv@meysam213/react-leaflet@marianmeres/jay@marianmeres/test-runner@marianmeres/file-based-routes@nibbs66/buttons-pkg@nickreese/seo-lint@metamodern/svelte-render@kaineer/oop-checks@kie/mock-github@junvary/quasar-ui-qcascader@pwa/webpack-assets@pwa/cli@nurdiansyah/uvu@object-studio/react-native-webms-db-migrationmikado-compilemergefsmj4d-excalidraw-originalmypluginlolnuxtpaginationspatepangdeuipayaza-web-sdkpayaza_staging_sdksedanbosokseesaw-test-results-parserrxbot-clinewdemo1nerunonsapienteperformance-results-parserpileuleuyanteapostgres-helperredzipquaffsirvglobuletimage-storieshottieleymangudinlagirajin@wpj/tato@universal-middleware/sirv@tomw2w/my-nuxt-layer@upleveled/ley@vercaemer/leyanakketigaanaklanangteaanakwadonteacodepert-svelte-uibackgammon_ui_sharedautomated-testresults-parserblix_svelvetfidelity_checkout_sdkfolder-routesgerimismalamseninfreshie@stasa87/react-insta-stories@small-tech/sirv
3.0.1

2 years ago

3.0.0

3 years ago

2.0.0

5 years ago

1.1.0

5 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.0.0

6 years ago