Node.js指挥官:可变选项的默认值?
Node.js commander: default for variadic option?
我想要一个带有默认值的可变参数选项,但我只能输入一个值作为默认值,如下所示:
const program = new Command("ingest");
program
.option("-e, --extensions <ext...>", "file extensions to load", "dat")
.parse(process.argv);
const options = program.opts();
这有效,默认值为 "dat"
。
但是如果默认是多个字符串组成的数组,比如["dat", "txt"]
?
怎么办?
我找到的第一个解决方案是不设置默认值,然后,如果 options.extensions
未定义,则使用默认数组加载它。这有效,但显然默认值没有出现在帮助中。
解决这个小问题的第二种方法是输入默认值作为 space 分隔的字符串:
program.option("-e, --extensions <ext...>", "file extensions to load", "dat txt");
然后:
if(typeof options.extensions === "string")
options.extensions = options.extensions.split(" ")
这样 options.extensions
总是一个字符串数组。
.addOption(new Option())
可以帮忙吗?不幸的是,除了提供的三个示例之外,我找不到 Option
class 的文档。
谢谢!
马里奥
默认值不一定是字符串。使用数组,它甚至可以简化您以后的代码,因为选项值将始终是一个数组。
program.option("-e, --extensions <ext...>", "file extensions to load", ["dat", "txt"]);
TypeScript 更新为在 Commander v9.3.0 允许的类型中包含 string[]
。
我发现的将数组默认值添加到可变参数选项的最Typescript-friendly方法是:
program.addOption(new Option("-e, --extensions <ext...>",
"file extensions to load").default(["dat", "txt"])
希望对您有所帮助
我想要一个带有默认值的可变参数选项,但我只能输入一个值作为默认值,如下所示:
const program = new Command("ingest");
program
.option("-e, --extensions <ext...>", "file extensions to load", "dat")
.parse(process.argv);
const options = program.opts();
这有效,默认值为 "dat"
。
但是如果默认是多个字符串组成的数组,比如["dat", "txt"]
?
我找到的第一个解决方案是不设置默认值,然后,如果 options.extensions
未定义,则使用默认数组加载它。这有效,但显然默认值没有出现在帮助中。
解决这个小问题的第二种方法是输入默认值作为 space 分隔的字符串:
program.option("-e, --extensions <ext...>", "file extensions to load", "dat txt");
然后:
if(typeof options.extensions === "string")
options.extensions = options.extensions.split(" ")
这样 options.extensions
总是一个字符串数组。
.addOption(new Option())
可以帮忙吗?不幸的是,除了提供的三个示例之外,我找不到 Option
class 的文档。
谢谢! 马里奥
默认值不一定是字符串。使用数组,它甚至可以简化您以后的代码,因为选项值将始终是一个数组。
program.option("-e, --extensions <ext...>", "file extensions to load", ["dat", "txt"]);
TypeScript 更新为在 Commander v9.3.0 允许的类型中包含 string[]
。
我发现的将数组默认值添加到可变参数选项的最Typescript-friendly方法是:
program.addOption(new Option("-e, --extensions <ext...>",
"file extensions to load").default(["dat", "txt"])
希望对您有所帮助