readdir-cluster
Create a cluster of workers to iterate through the filesystem
Usage
Complete API Documentation.
import readdirCluster, { Stat } from 'readdir-cluster'
function iterator(path: string, filename: string, stat: Stat) {
if (filename[0] === '.') return false
if (stat.directory) return false
}
const paths = await readdirCluster({ directory: '.', iterator })
console.log(paths)
Performance
Benchmarks:
-
Running readdir-cluster .
returns 7388 files in 500ms
-
Running readdir
with recursive: true
returns 7388 files in 100ms
import { readdir } from 'fs'
readdir('.', { recursive: true }, (err, files) => {
if (err) console.error(err)
else if (files.length) process.stdout.write(files.join('\n') + '\n')
})
-
Running fdir returns 6480 files in 100ms
import { fdir } from 'fdir'
const api = new fdir().withBasePath().crawl(process.argv[2])
api.withPromise().then((files) => {
if (files.length) process.stdout.write(files.join('\n') + '\n')
})
Recommendations:
- if you target Node.js 18.7 and above, you should use
fs.readdir
with recursive: true
- if you target older Node.js versions, you should use
@bevry/fs-list
which uses fs-readdir
if available otherwise uses the find
executable which is even more performant (60ms instead of 100ms) - if you target older Node.js versions and you want a stat object, use
readdir-cluster
- if you target Nodejs 12 and above, and want a lot of customisation, use fdir
As for why this package exists, readdir-cluster
was created in 2005, recursive
was added to Node.js in 2023, and fdir
was created in 2020. That said, there are several issues that could potentially improve readdir-cluster
performance.
Install
Install Globally
- Install:
npm install --global readdir-cluster
- Executable:
readdir-cluster
Install Locally
- Install:
npm install --save readdir-cluster
- Executable:
npx readdir-cluster
- Import:
import pkg from ('readdir-cluster')
- Require:
const pkg = require('readdir-cluster').default
This package is published with the following editions:
readdir-cluster
aliases readdir-cluster/index.cjs
which uses the Editions Autoloader to automatically select the correct edition for the consumer's environmentreaddir-cluster/source/index.ts
is TypeScript source code with Import for modulesreaddir-cluster/edition-es2022/index.js
is TypeScript compiled against ES2022 for Node.js 14 || 16 || 18 || 20 || 21 with Require for modulesreaddir-cluster/edition-es2017/index.js
is TypeScript compiled against ES2017 for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesreaddir-cluster/edition-es2015/index.js
is TypeScript compiled against ES2015 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesreaddir-cluster/edition-es5/index.js
is TypeScript compiled against ES5 for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modulesreaddir-cluster/edition-es2017-esm/index.js
is TypeScript compiled against ES2017 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Import for modulesreaddir-cluster/edition-types/index.d.ts
is TypeScript compiled Types with Import for modules
History
Discover the release history by heading on over to the HISTORY.md
file.
Backers
Code
Discover how to contribute via the CONTRIBUTING.md
file.
Authors
Maintainers
Contributors
Finances
Donors
License
Unless stated otherwise all works are:
and licensed under: