Как сделать CLI-программу на Node.js интерактивной?
Начиная с версии 7 Node.js предоставляет модуль readline как раз для этого: получать ввод из читаемого потока, например из потока process.stdin, который во время выполнения программы на Node.js является вводом из терминала, по одной строке за раз.
const readline = require('node:readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question(`What's your name?`, name => {
console.log(`Hi ${name}!`);
rl.close();
});Этот фрагмент кода спрашивает имя пользователя, и как только текст введён и пользователь нажимает enter, мы отправляем приветствие.
Метод question() показывает первый параметр (вопрос) и ждёт ввода пользователя. Он вызывает функцию обратного вызова (callback), как только нажат enter.
В этой функции обратного вызова мы закрываем интерфейс readline.
readline предлагает и несколько других методов — посмотрите их в документации пакета по ссылке выше.
Если вам нужно запросить пароль, лучше не отображать его обратно (echo), а вместо этого показывать символ *.