@humanfs/node
by Nicholas C. Zakas
If you find this useful, please consider supporting my work with a donation or nominate me for a GitHub Star.
Description
The hfs
bindings for use in Node.js and Node.js-compatible runtimes.
[!WARNING]
This project is experimental and may change significantly before v1.0.0. Use at your own caution and definitely not in production!
Installation
Install using your favorite package manager:
npm install @humanfs/node
# or
pnpm install @humanfs/node
# or
yarn add @humanfs/node
# or
bun install @humanfs/node
Usage
The easiest way to use hfs in your project is to import the hfs
object:
import { hfs } from "@humanfs/node";
Then, you can use the API methods:
const text = await hfs.text("file.txt");
const json = await hfs.json("file.json");
const arrayBuffer = await hfs.arrayBuffer("file.txt");
await hfs.write("file.txt", "Hello world!");
await hfs.write("file.txt", new TextEncoder().encode("Hello world!"));
await hfs.append("file.txt", "Hello world!");
await hfs.append("file.txt", new TextEncoder().encode("Hello world!"));
const found = await hfs.isFile("file.txt");
const size = await hfs.size("file.txt");
const mtime = await hfs.lastModified("file.txt");
await hfs.copy("file.txt", "file-copy.txt");
await hfs.move("file.txt", "renamed.txt");
await hfs.delete("file.txt");
await hfs.createDirectory("dir");
await hfs.createDirectory("dir/subdir");
const dirFound = await hfs.isDirectory("dir");
hfs.copyAll("from-dir", "to-dir");
hfs.moveAll("from-dir", "to-dir");
await hfs.delete("dir");
await hfs.deleteAll("dir");
If you'd like to create your own instance, import the NodeHfs
constructor:
import { NodeHfs } from "@humanfs/node";
import fsp from "fs/promises";
const hfs = new NodeHfs();
const hfs = new NodeHfs({ fsp });
If you'd like to use just the impl, import the NodeHfsImpl
constructor:
import { NodeHfsImpl } from "@humanfs/node";
import fsp from "fs/promises";
const hfs = new NodeHfsImpl();
const hfs = new NodeHfsImpl({ fsp });
Errors Handled
ENOENT
- in most cases, these errors are handled silently.ENFILE
and EMFILE
- calls that result in these errors are retried for up to 60 seconds before giving up for good.
License
Apache 2.0