Skip to content

Pour les outils CLI, il est souvent utile de lire depuis stdin. Dans Bun, l'objet console est un AsyncIterable qui produit des lignes depuis stdin.

ts
const prompt = "Tapez quelque chose : ";
process.stdout.write(prompt);
for await (const line of console) {
  console.log(`Vous avez tapé : ${line}`);
  process.stdout.write(prompt);
}

L'exécution de ce fichier donne une invite interactive sans fin qui répète tout ce que l'utilisateur tape.

sh
bun run index.ts
txt
Tapez quelque chose : hello
Vous avez tapé : hello
Tapez quelque chose : hello again
Vous avez tapé : hello again

Bun expose également stdin comme un BunFile via Bun.stdin. Ceci est utile pour lire progressivement de grandes entrées qui sont transmises au processus bun.

Il n'y a aucune garantie que les chunks seront divisés ligne par ligne.

ts
for await (const chunk of Bun.stdin.stream()) {
  // chunk est Uint8Array
  // cela le convertit en texte (suppose l'encodage ASCII)
  const chunkText = Buffer.from(chunk).toString();
  console.log(`Chunk : ${chunkText}`);
}

Cela affichera l'entrée qui est transmise au processus bun.

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

Consultez Docs > API > Utils pour plus d'utilitaires utiles.

Bun édité par www.bunjs.com.cn