Para ferramentas de CLI, muitas vezes é útil ler do stdin. No Bun, o objeto console é um AsyncIterable que produz linhas do stdin.
ts
const prompt = "Digite algo: ";
process.stdout.write(prompt);
for await (const line of console) {
console.log(`Você digitou: ${line}`);
process.stdout.write(prompt);
}Executar este arquivo resulta em um prompt interativo sem fim que ecoa qualquer coisa que o usuário digita.
sh
bun run index.tstxt
Digite algo: hello
Você digitou: hello
Digite algo: hello again
Você digitou: hello againO Bun também expõe stdin como um BunFile via Bun.stdin. Isso é útil para ler incrementalmente grandes entradas que são enviadas via pipe para o processo bun.
Não há garantia de que os chunks serão divididos linha por linha.
ts
for await (const chunk of Bun.stdin.stream()) {
// chunk é Uint8Array
// isso converte para texto (assume codificação ASCII)
const chunkText = Buffer.from(chunk).toString();
console.log(`Chunk: ${chunkText}`);
}Isso imprimirá a entrada que é enviada via pipe para o processo bun.
sh
echo "hello" | bun run stdin.tstxt
Chunk: helloVeja Docs > API > Utils para mais utilitários úteis.