Skip to content

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.ts
txt
Geben Sie etwas ein: hello
Sie haben eingegeben: hello
Geben Sie etwas ein: hello again
Sie haben eingegeben: hello again

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

Siehe Docs > API > Utils für weitere nützliche Utilities.

Bun von www.bunjs.com.cn bearbeitet