Modern FileSystem (fs) utilities to lazy walk directories Asynchronously (but also Synchronously). Under the hood the code has been created using ES6 Generators.
- Lazy walk by using fs.opendir.
- Zero dependencies.
- Enforce usage of Symbols for CONSTANTS.
- Synchronous API.
Note
Performance over some of the features is a non-goal.
- Node.js v20 or higher
This package is available in the Node Package Repository and can be easily installed with npm or yarn.
$ npm i @nodesecure/fs-walk
# or
$ yarn add @nodesecure/fs-walk
import path from "node:path";
import { walk } from "@nodesecure/fs-walk";
for await (const [dirent, absoluteFileLocation] of walk(".")) {
if (dirent.isFile()) {
console.log(absoluteFileLocation);
console.log(path.extname(absoluteFileLocation));
}
}
export interface WalkOptions {
extensions?: Set<string>;
}
export type WalkEntry = [dirent: fs.Dirent, absoluteFileLocation: string];
Asynchronous walk.
Synchronous walk (using readdirSync under the hood instead of opendir).
For example fetching JavaScript files for a given location:
import { walkSync } from "@nodesecure/fs-walk";
const javascriptFiles = [...walkSync("./someDirectory", { extensions: new Set([".js"]) }))]
.filter(([dirent]) => dirent.isFile())
.map(([, absoluteFileLocation]) => absoluteFileLocation);
console.log(javascriptFiles);
Thanks goes to these wonderful people (emoji key):
Gentilhomme π» π π π‘οΈ π |
Nicolas Hallaert π |
Antoine Coulon π§ |
Kouadio Fabrice Nguessan π§ |
Christian Lisangola |
PierreDemailly π§ |
MIT