Skip to content

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.ts
txt
Digita qualcosa: ciao
Hai digitato: ciao
Digita qualcosa: ciao di nuovo
Hai digitato: ciao di nuovo

Bun 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.ts
txt
Chunk: ciao

Consulta Docs > API > Utils per altre utility utili.

Bun a cura di www.bunjs.com.cn