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.tstxt
Tapez quelque chose : hello
Vous avez tapé : hello
Tapez quelque chose : hello again
Vous avez tapé : hello againBun 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.tstxt
Chunk : helloConsultez Docs > API > Utils pour plus d'utilitaires utiles.