>> .opencode/skill/bun-file-io
stars: 102886
forks: 9940
watches: 102886
last updated: 2026-02-12 07:15:34
Use this when
- Editing file I/O or scans in
packages/opencode - Handling directory operations or external tools
Bun file APIs (from Bun docs)
Bun.file(path)is lazy; calltext,json,stream,arrayBuffer,bytes,existsto read.- Metadata:
file.size,file.type,file.name. Bun.write(dest, input)writes strings, buffers, Blobs, Responses, or files.Bun.file(...).delete()deletes a file.file.writer()returns a FileSink for incremental writes.Bun.Glob+Array.fromAsync(glob.scan({ cwd, absolute, onlyFiles, dot }))for scans.- Use
Bun.whichto find a binary, thenBun.spawnto run it. Bun.readableStreamToText/Bytes/JSONfor stream output.
When to use node:fs
- Use
node:fs/promisesfor directories (mkdir,readdir, recursive operations).
Repo patterns
- Prefer Bun APIs over Node
fsfor file access. - Check
Bun.file(...).exists()before reading. - For binary/large files use
arrayBuffer()and MIME checks viafile.type. - Use
Bun.Glob+Array.fromAsyncfor scans. - Decode tool stderr with
Bun.readableStreamToText. - For large writes, use
Bun.write(Bun.file(path), text).
NOTE: Bun.file(...).exists() will return false if the value is a directory.
Use Filesystem.exists(...) instead if path can be file or directory
Quick checklist
- Use Bun APIs first.
- Use
path.join/path.resolvefor paths. - Prefer promise
.catch(...)overtry/catchwhen possible.
