Per gli strumenti CLI, è spesso utile leggere da stdin. In Bun, l'oggetto console è un AsyncIterable che produce righe da stdin.
ts
const prompt = "Digita qualcosa: ";
process.stdout.write(prompt);
for await (const line of console) {
console.log(`Hai digitato: ${line}`);
process.stdout.write(prompt);
}Eseguendo questo file si ottiene un prompt interattivo senza fine che ripete qualsiasi cosa l'utente digiti.
sh
bun run index.tstxt
Digita qualcosa: ciao
Hai digitato: ciao
Digita qualcosa: ciao di nuovo
Hai digitato: ciao di nuovoBun espone anche stdin come BunFile tramite Bun.stdin. Questo è utile per leggere incrementalmente input di grandi dimensioni che vengono inviati tramite pipe al processo bun.
Non c'è garanzia che i chunk siano divisi riga per riga.
ts
for await (const chunk of Bun.stdin.stream()) {
// chunk è Uint8Array
// questo lo converte in testo (presuppone codifica ASCII)
const chunkText = Buffer.from(chunk).toString();
console.log(`Chunk: ${chunkText}`);
}Questo stamperà l'input che viene inviato tramite pipe al processo bun.
sh
echo "ciao" | bun run stdin.tstxt
Chunk: ciaoConsulta Docs > API > Utils per altre utility utili.