Skip to content

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.ts
txt
Digite algo: hello
Você digitou: hello
Digite algo: hello again
Você digitou: hello again

O 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.ts
txt
Chunk: hello

Veja Docs > API > Utils para mais utilitários úteis.

Bun by www.bunjs.com.cn edit