Как сделать Node.js Интерактивная программа CLI?
Узел начиная с версии 7 предоставляет readline
модуль для выполнения именно этого: получать входные данные из считываемого потока, такого как process.stdin
поток, который во время выполнения программы узла является терминальным вводом, по одной строке за раз.
const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }) readline.question(`What's your name?`, (name) => { console.log(`Hi ${name}!`) readline.close() })
Этот фрагмент кода запрашивает имя пользователя, и как только текст введен и пользователь нажимает enter, мы отправляем приветствие.
Метод question()
показывает первый параметр (вопрос) и ожидает ввода пользователем. Он вызывает функцию обратного вызова после нажатия клавиши enter.
В этой функции обратного вызова мы закрываем интерфейс readline.
readline
предлагает несколько других методов, и я позволю вам ознакомиться с ними в документации по пакету, которую я привел выше.
Если вам нужно запросить пароль, лучше не повторять его, а вместо этого показывать символ *
.
Самый простой способ – использовать readline-sync
пакет , который очень похож с точки зрения API и обрабатывает это из коробки.
Более полное и абстрактное решение обеспечивается Inquirer.js посылка .
Вы можете установить его с помощью npm install inquirer
, а затем вы можете скопировать приведенный выше код следующим образом:
const inquirer = require('inquirer') var questions = [{ type: 'input', name: 'name', message: "What's your name?", }] inquirer.prompt(questions).then(answers => { console.log(`Hi ${answers['name']}!`) })
Inquirer.js позволяет вам делать много вещей, таких как задавать несколько вариантов, иметь переключатели, подтверждения и многое другое.
Стоит знать все альтернативы, особенно встроенные, предоставляемые Node, но если вы планируете перевести ввод CLI на следующий уровень, Inquirer.js это оптимальный выбор.
Оригинал: “https://flaviocopes.com/node-input-from-cli/”