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