mcpField
B
bun-file-io

bun-file-io

github.com/anomalyco开发225.5k105 次安装今天更新
代码仓库

关于 bun-file-io

这项开发技能说明在 `packages/opencode` 中使用 Bun 处理文件读写与扫描的约定,帮助贡献者选择文件、目录、扫描和外部进程相关 API。

主要功能

  1. 01Bun 文件读写方式
  2. 02使用 Bun.Glob 扫描文件
  3. 03使用 node:fs/promises 操作目录
  4. 04使用 Bun.which 和 Bun.spawn 运行外部工具
  5. 05解码流输出的指引

适用场景

  1. 01修改 `packages/opencode` 中的文件 I/O
  2. 02扫描文件与目录
  3. 03读取二进制或大型文件
  4. 04运行外部工具并处理输出

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/anomalyco/opencode --skill bun-file-io

安装后在 Claude Code 中输入/bun-file-io确认已加载。

详细介绍

适用场景

  • 编辑 packages/opencode 中的文件 I/O 或扫描逻辑
  • 处理目录操作或外部工具

Bun 文件 API(来自 Bun 文档)

  • Bun.file(path) 是惰性的;调用 text、json、stream、arrayBuffer、bytes、exists 进行读取。
  • 元数据:file.size、file.type、file.name。
  • Bun.write(dest, input) 可写入字符串、缓冲区、Blob、Response 或文件。
  • Bun.file(...).delete() 会删除文件。
  • file.writer() 会返回用于增量写入的 FileSink。
  • 使用 Bun.Glob + Array.fromAsync(glob.scan({ cwd, absolute, onlyFiles, dot })) 进行扫描。
  • 使用 Bun.which 查找二进制文件,然后使用 Bun.spawn 运行它。
  • 使用 Bun.readableStreamToText/Bytes/JSON 处理流输出。

何时使用 node:fs

  • 对目录操作(mkdir、readdir、递归操作)使用 node:fs/promises。

仓库规范

  • 文件访问优先使用 Bun API,而非 Node fs。
  • 读取前检查 Bun.file(...).exists()。
  • 对二进制文件或大文件使用 arrayBuffer(),并通过 file.type 检查 MIME 类型。
  • 使用 Bun.Glob + Array.fromAsync 进行扫描。
  • 使用 Bun.readableStreamToText 解码工具的 stderr。
  • 对于大规模写入,使用 Bun.write(Bun.file(path), text)。

注意:如果值是目录,Bun.file(...).exists() 将返回 false。 如果路径可能是文件或目录,请改用 Filesystem.exists(...)

快速检查清单

  • 优先使用 Bun API。
  • 使用 path.join/path.resolve 处理路径。
  • 尽可能优先使用 Promise 的 .catch(...),而非 try/catch。

评论

支持 Markdown