Use this when
- •Editing file I/O or scans in
packages/jonsoc - •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).
Quick checklist
- •Use Bun APIs first.
- •Use
path.join/path.resolvefor paths. - •Prefer promise
.catch(...)overtry/catchwhen possible.