@chunkd/fs

中文文档
11.5.3发布于 2026/10/23MITTypeScriptES Module构建来源已验证近 30 天下载 2699

File system abstraction layer

原始使用文档
文档目录6 节
  1. Usage
  2. Basic
  3. Multiple file systems
  4. Remote file systems
  5. Multiple S3 Credentials
  6. Errors

@chunkd/fs

File system abstraction layer

Makes it easier to work with local file system or remote async applications with filesystem like interfaces

  • File - Read/Write the local file system
  • Memory - memory as a mock file system
  • Http -HTTP(s) requests to a remote web server
  • AWS - AWS S3 as a remote file system

Usage

Basic

Read a text file

import { fsa } from '@chunkd/fs';

const bytes = await fsa.read(fsa.toUrl('../foo.txt'));

List a folder

for await (const url of fsa.list(fsa.toUrl('/'))) {
  const bytes = await fsa.read(url);
}

Multiple file systems

Register multiple file systems

import { fsa, FsMemory } from '@chunkd/fs';

fsa.register('memory://', new FsMemory());

await fsa.write(fsa.toUrl('memory://foo.txt'), 'Hello World');

// Stream the file from memory into the local file system
await fsa.write(fsa.toUrl('/foo.txt'), fsa.readStream(fsa.toUrl(()'memory://foo.txt')));

Remote file systems

Remote file systems can also be used

import { fsa, FsHttp } from '@chunkd/fs';
import { FsAwsS3 } from '@chunkd/fs-aws';

fsa.register('https://', new FsHttp());
fsa.register('s3://', new FsAwsS3());

// Stream a file from https://example.com into AWS S3
await fsa.write(fsa.toUrl('s3://example/foo.txt'), fsa.readStream(fsa.toUrl('https://example.com/foo.txt')));

Multiple S3 Credentials

Multiple s3 clients can be registered with different credentials and then be used to stream files between AWS accounts or roles

import { fsa } from '@chunkd/fs';
import { FsAwsS3 } from '@chunkd/fs-aws';

fsa.register('s3://bucket-a/', new FsAwsS3(new S3Client({ credentials: bucketA })));
fsa.register('s3://bucket-b/', new FsAwsS3(new S3Client({ credentials: bucketB })));

fsa.write(fsa.toUrl('s3://bucket-a/foo.txt'), fsa.readStream(fsa.toUrl('s3://bucket-b/foo.txt')));

Errors

All file system errors should be wrapped into a FsError

try {
  await fsa.read('s3://foo/bar.txt')
} catch(e) {
  if(FsError.is(e)) {
    e.status // Http Status code eg 403
    e.cause // original error
    e.action // `read`
    e.url // `s3://foo/bar.txt`
  }
}

# Interface

All file systems implement then following interface interface

```typescript
export interface FileSystem {
  /** Read a file into a buffer */
  read(location: URL): Promise<Buffer>;
  /** Create a read stream */
  readStream(location: URL): Readable;
  /** Write a file from either a buffer or stream */
  write(location: URL, buffer: Buffer | Readable | string, opts?: Partial<WriteOptions>): Promise<void>;
  /** list all files in path */
  list(location: URL, opt?: ListOptions): AsyncGenerator<URL>;
  /** list all files with file info in path */
  details(location: URL, opt?: ListOptions): AsyncGenerator<FileInfo>;
  /** Get information about the path  */
  head(location: URL): Promise<FileInfo | null>;
  /** Create a chunk source to read chunks out of */
  source(location: URL): Source;
  /** Delete a file from the location */
  delete(location: URL): Promise<void>;
}

版本与发布记录

@chunkd/fs 共发布 41 个版本,首次发布于 2021/09/15;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
11.5.3latest2026/10/2317 天前
11.5.22026/05/235 个月前
11.5.12026/04/087 个月前
11.5.02026/03/277 个月前
11.4.02026/03/247 个月前
11.3.22026/03/048 个月前

关于 @chunkd/fs 的常见问题

@chunkd/fs 是什么?

File system abstraction layer

如何安装 @chunkd/fs?

在项目目录运行 npm install @chunkd/fs,或使用 pnpm add / yarn add / bun add。

@chunkd/fs 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chunkd/fs 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@chunkd/fs 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@chunkd/fs 可以商用吗?

@chunkd/fs 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chunkd/fs 的下载量有多少?

根据 npm 官方下载统计,@chunkd/fs 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,699 次,日均约 90 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chunkd/fs 还在维护吗?

最新版本 11.5.3 发布于 2026/10/23(17 天前);至今共发布 41 个版本,其中过去 12 个月发布了 7 个;首次发布于 2021/09/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。