为什么 yargs 中的多个命令不起作用?

问题描述 投票:0回答:1

我正在开发一个 CLI 项目,用户必须先登录才能使用任何其他命令。 以下是用户将与之交互的命令。

  1. oms 登录 -u 用户名 -p -a auth_url
  2. oms 获取 -u url

当我尝试查看 oms login 的帮助时,它显示 oms get 命令的帮助。

const argv = require('yargs/yargs')(process.argv.slice(2))
    .usage('Usage: $0 <command> [options]')
    .command({
        command: "oms login",
        desc: "Login the User to OMS",
        builder: {
            username: {
                alias: 'u',
                demandOption: true

            },
            password: {
                alias: 'p',
                demandOption: true
            },
            auth_url: {
                alias: 'a',
                demandOption: true
            }
        },
        handler: (argv) => console.log(argv),
    })
    .command({
        command: "oms get",
        desc: "Get the Status",
        builder: {
            url: {
                alias: 'u',
                demandOption: true
            }
        },
        handler: (argv) => console.log(argv),
    })
    .help('h')
    .alias('h', 'help')
    .wrap(null)
    .argv;

来自 oms 登录的帮助

PS F:\node\REST-CLI\cli> node .\index.js oms login --help
index.js oms get

Get the Status

Options:
      --version  Show version number  [boolean]
  -h, --help     Show help  [boolean]
  -u, --url  [required]

来自 oms get

的帮助
PS F:\node\REST-CLI\cli> node .\index.js oms get --help
index.js oms get

Get the Status

Options:
      --version  Show version number  [boolean]
  -h, --help     Show help  [boolean]
  -u, --url  [required]

我正在使用上面的代码,请让我知道我在哪里犯了错误。 谢谢

node.js command-line-interface yargs
1个回答
0
投票

我猜

index.js
将是你的可执行文件,你可以将其放入
package.json
中作为

  "bin": {
    "oms": "./index.js"
  },

然后将子命令定义为:

    .command({
        command: "login",
        // 
    })
    .command({
        command: "get",
        // rest ommited

    })
© www.soinside.com 2019 - 2024. All rights reserved.