Skip to content

Para herramientas CLI, a menudo es útil leer desde stdin. En Bun, el objeto console es un AsyncIterable que produce líneas desde stdin.

ts
const prompt = "Escribe algo: ";
process.stdout.write(prompt);
for await (const line of console) {
  console.log(`Escribiste: ${line}`);
  process.stdout.write(prompt);
}

Ejecutar este archivo resulta en un prompt interactivo que nunca termina y que hace eco de lo que el usuario escribe.

sh
bun run index.ts
txt
Escribe algo: hola
Escribiste: hola
Escribe algo: hola de nuevo
Escribiste: hola de nuevo

Bun también expone stdin como un BunFile vía Bun.stdin. Esto es útil para leer incrementalmente entradas grandes que se canalizan al proceso bun.

No hay garantía de que los fragmentos se dividan línea por línea.

ts
for await (const chunk of Bun.stdin.stream()) {
  // chunk es Uint8Array
  // esto lo convierte a texto (asume codificación ASCII)
  const chunkText = Buffer.from(chunk).toString();
  console.log(`Fragmento: ${chunkText}`);
}

Esto imprimirá la entrada que se canaliza al proceso bun.

sh
echo "hello" | bun run stdin.ts
txt
Fragmento: hello

Consulta Documentación > API > Utilidades para más utilidades útiles.

Bun por www.bunjs.com.cn editar