Простой консольный менеджер команд
Добавьте пакет в свои dependencies
с помощью npm или yarn
$ npm i console-commander
$ yarn add console-commander
// Импорт модулей
const { Commander, Command } = require('console-commander');
// Создание класса обработчика команд
class TestCommand extends Command {
signature = 'test-command {--T|<number>timeout=1 : время в секундах}';
get description() {
return 'Это описание команды';
}
handle() {
return new Promise((resolve) => {
setTimeout(() => {
resolve({ response: 'ok' });
}, this.options.timeout * 1000);
});
}
}
// Инициализация Commander
const commander = new Commander();
// Добавление команд
commander.append(TestCommand);
// Старт
commander
.start()
.then((result) => {
console.log(result);
})
.catch((error) => console.error(error.message));
$ example test-command --timeout 5
Все параметры, предоставленные пользователем, заключены в фигурные скобки и имеют префикс "--".
class TestCommand extends Command {
signature = 'test-command {--verbose}';
}
Чтобы назначить алиас при определении опции, вы можете указать его перед именем опции и использовать символ | в качестве разделителя, чтобы отделить ярлык от полного имени опции:
class TestCommand extends Command {
signature = 'test-command {--T|timeout}';
}
Вы можете назначить описания параметрам ввода, отделив имя параметра от описания двоеточием.
class TestCommand extends Command {
signature = 'test-command {--timeout : время в секундах}';
}
Чтобы описать тип, напишите его <typing>
впереди с именем параметра
class TestCommand extends Command {
signature = 'test-command {--<number>timeout}';
}
Разрешены типы Boolean
, Number
и String
Чтобы дождаться нескольких вариантов, нажмите *
после имени параметра
class TestCommand extends Command {
signature = 'test-command {--src*}';
}
Чтобы определить значение по умолчанию, завершите имя с помощью =
и добавьте значение
class TestCommand extends Command {
signature = 'test-command {--src=one.js}';
}
Для нескольких значений по умолчанию необходимо написать *=
class TestCommand extends Command {
signature = 'test-command {--src*=one.js,two.js}';
}
Значения разделяются ,
Опция | Алиас | Описание |
---|---|---|
--help | -H | Вывод справки |
--list | -L | Вывод списка команд |
$ example test-command --help