javascript - CommanderJS 我无法从选项中获得价值
问题描述
我在nodejs中编写了一个cli程序,使用commandjs工具但是当我尝试时,它无法从process.argv中获取价值。请帮助解决这个问题。
//cli.js
const program = require('commander');
program
.version("0.0.1")
.option("-a, --add", "add something")
.option("-u, --update", "update something")
.option("-r, --remove", "remove something")
.parse(process.argv);
console.log(`version ${program.version} You Choose: `);
if (program.add) {
console.log(" add something")
}
if (program.update) {
console.log(" update something")
}
if (program.remove) {
console.log(" remove something")
}
我跑
$ node cli.js --add
version version(str, flags, description) {
if (str === undefined) return this._version;
this._version = str;
flags = flags || '-V, --version';
description = description || 'output the version number';
const versionOption = this.createOption(flags, description);
this._versionOptionName = versionOption.attributeName();
this.options.push(versionOption);
this.on('option:' + versionOption.name(), () => {
this._outputConfiguration.writeOut(`${str}\n`);
this._exit(0, 'commander.version', str);
});
return this;
} You Choose:
无法获得价值,这是为什么呢?
解决方案
您需要使用 opts 函数来访问已解析的参数。该版本将使用 -V 标志自动显示。
const program = require('commander');
program
.version("0.0.1")
.option("-a, --add", "add something")
.option("-u, --update", "update something")
.option("-r, --remove", "remove something")
.parse(process.argv);
let options = program.opts();
if (options.add) {
console.log(" add something")
}
if (options.update) {
console.log(" update something")
}
if (options.remove) {
console.log(" remove something")
}
推荐阅读
- php - 变量在 if 语句外部而不在其内部起作用
- android-emulator - Detox 框架可以在模拟器/模拟器上拍照吗?
- sql-server - 从查询构建视图
- node.js - http POST 未到达后端
- flutter - Flutter:如何根据设备的屏幕尺寸调整文本大小
- sql - 在 Access 的主键字段中插入值
- apache-flink - Flink:评估流的每个传入元素的窗口
- python - 有没有办法使用 python 将嵌入式视频下载为 mp4 文件?
- css - 解决方法:有伪类?
- swift - 更新用户积分并将其存储到 userDefaults 时,我做错了什么?