Skip to content

Для 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.ts
txt
Введите что-нибудь: hello
Вы ввели: hello
Введите что-нибудь: hello again
Вы ввели: hello again

Bun также предоставляет 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.ts
txt
Фрагмент: hello

Смотрите Документация > API > Utils для получения дополнительных полезных утилит.

Bun от www.bunjs.com.cn