fs-iterator

A file system iterator with filter and asyncIterator iterafaces. Supports Node 0.8 and above

MIT 105 个版本
安装
npm install fs-iterator
yarn add fs-iterator
pnpm add fs-iterator
bun add fs-iterator
README

fs-iterator

A file system iterator with filter and asyncIterator interfaces

Entries are of the format:

  • string: basename - file or directory name
  • string: path - realtive path from the directory to the file or directory
  • string: fullPath - full path to the file or directory
  • fs.Stats || fsDirent: stats - file, directory or symlink stats

Promise

const Iterator = require('fs-iterator');

// traverse skipping .git folders
const iterator = new Iterator(__dirname, { filter: (entry: Entry): boolean => { return entry.stats.isDirectory() && entry.basename === '.git'; } });
iterator.on('error', console.log); // log expected errors without stopping flow 'ENOENT', 'EPERM', 'EACCES', 'ELOOP'

let value = await iterator.next();
while(!value.done) {
  /* do something */
  value = await iterator.next();
}

// using forEach with concurrency
const iterator2 = new Iterator(__dirname, { error: (err) => { return true; /* filter errors */ }});
const done = await iterator2.forEach((entry: Entry): undefined => { /* do something */ }, { concurrency: 1024 })

Callback

const Iterator = require('fs-iterator');

// traverse skipping .git folders
const iterator = new Iterator(__dirname, { filter: (entry: Entry): boolean => { return entry.stats.isDirectory() && entry.basename === '.git'; }, error: (err) => { return true; /* filter errors */ } });
iterator.forEach((entry: Entry): undefined => { /* do something */ }, { concurrency: 1024 }, (err, done) => {})

Iterator Options:

  • number: depth - choose maximum depth of the tree to traverse. (default: Infinity)
  • function: filter - filter function to continue processing the tree. Return false to skip processing (default: process all)
  • bool: callbacks - use a filter function with a callback format like function(entry, callback). (default: false)
  • bool: alwaysStat - stat each file individually rather than fetching dirents when reading directories. (default: false)
  • bool: lstat - use lstat to get the link's stats instead of using stat on the file itself. (default: false)
  • function: error - custom error callback for expected filesystem errors ('ENOENT', 'EPERM', 'EACCES', 'ELOOP'). Return false to stop processing. (default: silent filsystem errors)

forEach Options:

  • bool: callbacks - use an each function with a callback function(entry, callback) (default: false)
  • number: concurrency - parallelism of processing. (default: Infinity)
  • number: limit - maximum number to process. (default: Infinity)
版本列表
7.1.4 2026-05-26
7.1.3 2026-05-26
7.1.2 2026-05-22
7.1.1 2025-12-24
7.1.0 2025-12-20
7.0.0 2025-12-18
6.1.12 2025-12-12
6.1.11 2025-12-12
6.1.10 2025-12-04
6.1.9 2025-12-04
6.1.8 2025-12-04
6.1.7 2025-12-03
6.1.6 2025-11-06
6.1.5 2025-10-21
6.1.4 2025-10-21
6.1.3 2025-07-08
6.1.2 2025-06-30
6.1.1 2025-06-29
6.1.0 2025-06-29
6.0.6 2025-06-29
6.0.5 2025-06-22
6.0.4 2025-06-22
6.0.3 2025-06-21
6.0.2 2025-06-20
6.0.1 2025-06-18
6.0.0 2025-06-17
5.3.18 2025-06-16
5.3.17 2025-06-15
5.3.16 2025-06-15
5.3.15 2025-06-15
5.3.14 2025-06-15
5.3.13 2025-06-14
5.3.12 2025-05-24
5.3.11 2025-05-20
5.3.10 2025-05-20
5.3.9 2025-05-20
5.3.8 2025-05-19
5.3.7 2025-05-19
5.3.6 2025-05-19
5.3.5 2025-05-19
5.3.4 2025-05-19
5.3.3 2025-05-19
5.3.2 2025-05-19
5.3.1 2025-05-19
5.3.0 2025-05-19
5.2.27 2025-05-18
5.2.26 2025-05-18
5.2.25 2025-03-03
5.2.24 2025-01-23
5.2.23 2025-01-23
5.2.22 2025-01-23
5.2.21 2025-01-23
5.2.20 2025-01-23
5.2.19 2025-01-23
5.2.18 2025-01-23
5.2.17 2025-01-23
5.2.16 2025-01-23
5.2.15 2025-01-15
5.2.14 2025-01-15
5.2.13 2025-01-14
5.2.12 2025-01-12
5.2.11 2025-01-12
5.2.10 2025-01-04
5.2.9 2025-01-04
5.2.8 2025-01-04
5.2.7 2025-01-04
5.2.6 2025-01-04
5.2.5 2025-01-04
5.2.3 2025-01-04
5.2.2 2025-01-04
5.2.1 2024-12-29
5.2.0 2024-12-25
5.1.1 2024-11-29
5.1.0 2024-11-21
5.0.1 2024-02-18
5.0.0 2024-02-18
4.2.0 2024-02-17
4.1.1 2022-06-29
4.1.0 2021-07-26
4.0.2 2020-06-21
4.0.1 2020-06-21
4.0.0 2020-06-20
3.0.3 2020-05-20
3.0.2 2020-05-20
3.0.1 2020-04-28
3.0.0 2020-04-28
2.6.0 2020-04-22
2.5.8 2020-04-21
2.5.7 2020-04-21
2.5.6 2020-04-21
2.5.5 2020-04-20
2.5.4 2020-04-20
2.5.3 2020-04-20
2.5.2 2020-04-17
2.5.1 2020-04-17
2.5.0 2020-04-17
2.4.0 2020-04-16
2.3.0 2020-04-13
2.2.0 2020-04-12
2.1.0 2020-04-11
2.0.0 2020-04-10
1.3.0 2020-04-08
1.2.0 2020-04-07
1.1.0 2020-04-06
1.0.0 2020-04-05