Für CLI-Tools ist es oft nützlich, von stdin zu lesen. In Bun ist das console-Objekt ein AsyncIterable, das Zeilen von stdin liefert.
ts
const prompt = "Geben Sie etwas ein: ";
process.stdout.write(prompt);
for await (const line of console) {
console.log(`Sie haben eingegeben: ${line}`);
process.stdout.write(prompt);
}Das Ausführen dieser Datei führt zu einem endlosen interaktiven Prompt, der alles, was der Benutzer eingibt, echoartig wiedergibt.
sh
bun run index.tstxt
Geben Sie etwas ein: hello
Sie haben eingegeben: hello
Geben Sie etwas ein: hello again
Sie haben eingegeben: hello againBun gibt stdin auch als BunFile über Bun.stdin frei. Dies ist nützlich zum inkrementellen Lesen großer Eingaben, die in den bun-Prozess gepipet werden.
Es gibt keine Garantie, dass die Chunks Zeile für Zeile aufgeteilt werden.
ts
for await (const chunk of Bun.stdin.stream()) {
// chunk ist Uint8Array
// dies konvertiert es in Text (nimmt ASCII-Codierung an)
const chunkText = Buffer.from(chunk).toString();
console.log(`Chunk: ${chunkText}`);
}Dies gibt die Eingabe aus, die in den bun-Prozess gepipet wird.
sh
echo "hello" | bun run stdin.tstxt
Chunk: helloSiehe Docs > API > Utils für weitere nützliche Utilities.