Проверка, является ли аргумент нулевым в командире? - PullRequest
0 голосов
/ 08 мая 2018

Используя commander.js , чтобы создать CLI, и у меня есть такое утверждение:

 cli.
 command('serve').
 alias('s').
 description('Create a new project').
 action((target) => {
    console.log("TARGET IS: ", target) ....

Параметр target регистрируется как значение независимо от того, предоставлено ли значение команде. Как мы можем проверить, является ли аргумент target нулевым? Вот что записывается для значения target, когда в команду не передается значение:

        TARGET IS:  Command {
        commands: [],
        options: [],
        _execs: {},
        _allowUnknownOption: false,
        _args: [],
        _name: 'serve',
        _noHelp: false,
        parent: 
        Command {
            commands: 
            [ [Command],
                [Command],
                [Command],
                [Command],
                [Command],
                [Command],
                [Circular],
                [Command] ],
            options: [ [Option] ],
            _execs: {},
            _allowUnknownOption: false,
            _args: [],
            _name: 'sfc',
            Command: { [Function: Command] super_: [Function] },
            Option: [Function: Option],
            _version: '1.0.0',
            _versionOptionName: 'version',
            _events: 
            { 'option:version': [Function],
                'command:new': [Function: listener],
                'command:n': [Function: listener],
                'command:clean': [Function: listener],
                'command:c': [Function: listener],
                'command:build:main:css': [Function: listener],
                'command:bmc': [Function: listener],
                'command:build:test:css': [Function: listener],
                'command:btc': [Function: listener],
                'command:build': [Function: listener],
                'command:b': [Function: listener],
                'command:test:html': [Function: listener],
                'command:t': [Function: listener],
                'command:serve': [Function: listener],
                'command:s': [Function: listener],
                'command:dist': [Function: listener],
                'command:d': [Function: listener] },
            _eventsCount: 17,
            _description: 'SuperflyCSS Command Line Interface',
            _argsDescription: undefined,
            rawArgs: [ '/usr/bin/node', '/home/ole/.npm-packages/bin/sfc', 'serve' ],
            args: [ [Circular] ] },
        _alias: 's',
        _description: 'Serve project',
        _argsDescription: undefined }

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Оказывается, что если аргумент (который является необязательным в данном случае) равен нулю, Commander заменяет его собственным мета-аргументом, поэтому мы не можем выполнить обычную проверку на ноль или неопределенность. Вот как я реализовал проверку:

cli.
command('serve').
alias('s').
description('Serve project').
action((target) => {

    let serve = null;
    if (typeof target === 'string' || target instanceof String) {
        serve = target;
    }
    else {
        serve = PLI.target.test.html;
    }

Для всего исходного кода см. Здесь

0 голосов
/ 08 мая 2018

Ниже приведен исполняемый фрагмент оператора ! (логическое НЕ) , используемого для проверки, является ли переменная нулевой (или ложной).

   var nullVar = null;
if(!nullVar){alert("nullVar is null (or false)")}

Таким образом, вы можете видеть, что его можно легко применить к вашему делу.

...