Создание 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 | |