option 不能注册在子命令上

option 不能注册在子命令上

const clone = program.command('clone <source> [destination]')

clone

    .description('克隆仓库')

    .option('-f --force', '是否强制克隆', false)

    .action((source, destination, cmdObj) => {

        console.log('this is command "clone"', source, destination, cmdObj.force)

    })



相关截图:

http://img1.sycdn.imooc.com//climg/611e716709781b3c04010047.jpghttp://img1.sycdn.imooc.com//climg/611e718b095d9f1504750129.jpg

问题描述:

参数能获取到 但是option总是会识别到主命令上,这是为什么呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
扬_灵 2021-08-20 08:40:25

同学你好,option是可以注册在子命令上的。可以把你的代码完整发一下吗http://img1.sycdn.imooc.com//climg/611ef9ee096f4c1415721190.jpg

  • 提问者 慕UI7606399 #1

    #!/usr/bin/env node


    const commander = require('commander')

    const pkg = require('../package.json')


    // 单例

    // const {program} = commander


    // 手动初始化一个实例

    const program = new commander.Command()


    program

    .name(Object.keys(pkg.bin)[0])

    .usage('<commander> [options]')

    .version(pkg.version)

    .option('-d, --debug', '是否启动debug模式', false)

    .option('-e, --envName <envName>', '获取环境变量名称')

    .parse(process.argv)


    // 注册命令 command

    // const clone = program.command('clone <source> [destination]')

    // clone

    //   .description('克隆仓库')

    //   .option('-f --force', '是否强制克隆', false)

    //   .action((source, destination, cmdObj) => {

    //     console.log('this is command "clone"', source, destination, cmdObj.force)

    //   })



    // program

    //   .command('clone')

    //   .argument('<source>', '仓库地址')

    //   .argument('[destination]', '仓库地址')

    //   .description('clone a repository')

    //   .action((source, destination, cmdObj) => {

    //     console.log('this is command "clone"', source, destination, cmdObj.title)

    //   })


    // 注册命令 addCommand

    const service = new commander.Command('service')

    service

    .command('start [port]')

    .alias('s')

    .description('start service by port')

    .action((port) => {

    console.log('do service start', port)

    })

    service

    .command('stop')

    .description("stop service")

    .action(() => {

    console.log('stop service')

    })


    program.addCommand(service)


    program.parse(process.argv)


    2021-08-24 22:35:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师