Создание CLI-приложения¶
Node.js позволяет создавать CLI-приложения, взаимодействие с которыми осуществляется через интерфейс командной строки.
Для начала необходимо установить модули commander
и inquirer
. Commander предоставляет гибкое API для обработки команд и параметров командной строки, а inquirer позволяет пользователю взаимодействовать с приложением через консоль в процессе его работы.
1 |
|
Рассмотрим пример консольного Node.js приложения, которое создает конфигурационные файлы в одном из трех форматов: json
, txt
или cfg
(по умолчанию). Также предусмотрим возможность просматривать список уже созданных файлов.
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
|
При создании Node.js CLI-приложения можно указать его метаданные: версию и описание.
1 2 3 |
|
Чтобы узнать версию, выполните следующую команду.
1 |
|
Для просмотра списка возможных команд и их опций укажите параметр --help
.
1 |
|
Команды описываются с помощью метода command()
модуля commander
, которому параметром передается имя команды с названием задаваемого ей параметра, заключенного в угловые скобки.
1 |
|
Для описания самой команды имеется метод description()
.
1 |
|
Метод option()
позволяет задать дополнительные необязательные аргументы команды. Самому методу передаются два аргумента:
- имя параметра;
- описание параметра (необязательно).
1 |
|
Краткая форма записи команды задается методом alias()
.
1 |
|
В методе action()
описывается логика обработки создаваемой command()
команды. Параметрами action()
принимает все значения основных параметров команды, а последним параметром объект с дополнительными параметрами, заданными методом option()
.
1 |
|
После описания всех команд обязательно необходимо вызвать метод parse()
и передать ему все параметры командной строки.
1 |
|
Для ввода параметров конфигурационного файла в приведенном примере Node.js CLI-приложения используется модуль inquirer
. С помощью его метода prompt
задается массив параметров, которые должен заполнить пользователь. Сам метод возвращает объект Promise
с заполненными данными в виде объекта.
1 2 3 4 5 6 7 |
|
Вводимый пользователем параметр описывается объектом со следующими свойствами:
type
- тип поля, возможные значения:input
,number
,confirm
,list
,rawlist
,expand
,checkbox
,password
иeditor
;name
- имя параметра;message
- текст, который будет отображаться пользователю при запросе ввода параметра;default
- значение параметра по умолчанию.
Здесь указаны основные свойства, с полным перечнем можно ознакомиться здесь.
Теперь рассмотрим, как запускать свое приложение не напрямую через скрипт, а с использованием глобальной команды.
В app.js
в самом начале уже имеется следующая строка.
1 |
|
Она указывает, что обработка данного файла должна осуществляться Node.js.
Теперь обновим файл package.json
.
1 2 3 4 5 |
|
И выполним из директории проекта следующую команду.
1 |
|
Теперь созданное Node.js CLI-приложение может вызываться глобально из командной строки следующим образом.
1 |
|