Для CLI-инструментов часто полезно читать из stdin. В Bun объект console является AsyncIterable, который выдаёт строки из stdin.
ts
const prompt = "Введите что-нибудь: ";
process.stdout.write(prompt);
for await (const line of console) {
console.log(`Вы ввели: ${line}`);
process.stdout.write(prompt);
}Запуск этого файла приводит к бесконечному интерактивному запросу, который повторяет всё, что вводит пользователь.
sh
bun run index.tstxt
Введите что-нибудь: hello
Вы ввели: hello
Введите что-нибудь: hello again
Вы ввели: hello againBun также предоставляет stdin как BunFile через Bun.stdin. Это полезно для пошагового чтения больших входных данных, которые передаются в процесс bun.
Нет гарантии, что фрагменты будут разделены построчно.
ts
for await (const chunk of Bun.stdin.stream()) {
// chunk - это Uint8Array
// это преобразует его в текст (предполагается кодировка ASCII)
const chunkText = Buffer.from(chunk).toString();
console.log(`Фрагмент: ${chunkText}`);
}Это выведет входные данные, которые передаются в процесс bun.
sh
echo "hello" | bun run stdin.tstxt
Фрагмент: helloСмотрите Документация > API > Utils для получения дополнительных полезных утилит.