Рубрики
Без рубрики

Принимать ввод из командной строки в узле

Как сделать Node.js Интерактивная программа CLI с использованием встроенного модуля узла readline

Как сделать 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/”