@nodesecure/fs-walk
v2.0.0
Published
Modern FileSystem (fs) utilities to lazy walk directories Asynchronously (but also Synchronously)
Downloads
302
Readme
Modern FileSystem (fs) utilities to lazy walk directories Asynchronously (but also Synchronously). Under the hood the code has been created using ES6 Generators.
Features
- 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.
Requirements
- Node.js v18 or higher
Getting Started
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
Usage example
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));
}
}
API
export interface WalkOptions {
extensions?: Set<string>;
}
export type WalkEntry = [dirent: fs.Dirent, absoluteFileLocation: string];
walk(directory: string, options?: WalkOptions): AsyncIterableIterator< WalkEntry >
Asynchronous walk.
walkSync(directory: string, options?: WalkOptions): IterableIterator< WalkEntry >
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);
Contributors ✨
Thanks goes to these wonderful people (emoji key):
License
MIT