gpt4 book ai didi

node.js - Yargs - 如何为省略的位置参数提供自定义错误消息

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:16 26 4
gpt4 key购买 nike

我找不到正确配置位置参数的方法。我有这个代码:

#!/usr/bin/env node

const create = (argv) => {
console.log('create component with name:', argv.name)
}

const createBuilder = (yargs) => {
yargs.positional('name', {
desc: 'Name of the new component',
})
}

/* eslint-disable no-unused-expressions */
require('yargs')
.command({
command: 'create <name>',
desc: 'Create a new component',
builder: createBuilder,
handler: create,
})
.demandCommand(1, 'A command is required')
.help()
.argv

并且我想提供自定义错误消息,以防用户在创建命令后未指定名称。

从文档中我不清楚如何做到这一点,在处理 github 问题时我遇到了这个评论 (#928):

I recommend instead using demandCommand and demandOption (each of which are documented).

These allow you to configure positional arguments and flag arguments separately

我尝试过各种组合

.demandCommand(1, 'You need to provide name for the new component')

.demandOption('name', 'You need to provide name for the new component')

但运气不好。有人知道该怎么做吗?

最佳答案

tl;dr - 尝试通过将字符串 *$0 添加到命令名称的开头,使您的命令成为默认命令。

我发现,只有在 default command 中定义位置参数时,才会考虑位置参数(即:显示在帮助菜单中,并在未提供所需位置时抛出错误)。 .

以下是让它与您的代码一起使用的示例(请注意,您不再需要使用 .demandCommand()):

require('yargs')
.scriptName('cli-app')
.command({
command: '$0 create <name>',
desc: 'Create a new component',
builder: yargs => {
yargs.positional('name', {
desc: 'Name of the new component'
});
},
handler: function(argv) {
console.log('this is the handler function!');
}
})
.help().argv;

输出(注意最后的“没有足够的非选项参数:有 1,需要至少 2”行):

➞ node cli-app.js create                                                                                                                                       1 ↵
cli-app create <name>

Create a new component

Positionals:
name Name of the new component

Options:
--version Show version number [boolean]
--help Show help [boolean]

Not enough non-option arguments: got 1, need at least 2

关于node.js - Yargs - 如何为省略的位置参数提供自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47304347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com