如何使用yargs获取排除'._'和'.$0'之外的所有命令行参数
解决方式
有两种常用的实现方案,其中ES6解构的方式最通用,不需要依赖yargs的特定版本:
1. 直接用ES6解构赋值
拿到yargs返回的参数对象后,直接解构剔除_和$0两个内置字段即可:
const yargs = require('yargs/yargs') const { hideBin } = require('yargs/helpers') const argv = yargs(hideBin(process.argv)).parse() // 提取除了_、$0之外的所有字段到cleanArgs const { _, $0, ...cleanArgs } = argv console.log(cleanArgs)
运行你的示例命令node index.js default --optipn1=true --option2=false --custom,输出的cleanArgs就是你要的结果:
{ optipn1: 'true', option2: 'false', custom: true }
2. yargs内置配置配合处理
yargs v16及以上版本支持解析配置,你可以在初始化时配置解析规则减少手动处理的步骤:
const argv = yargs(hideBin(process.argv)) .parserConfiguration({ // 配置解析时自动处理内置字段 'populate--': false }) .parse() const { _, ...cleanArgs } = argv
这两种方式都可以实现需求,第一种不需要记yargs的配置规则,通用性更强,更推荐使用。
内容的提问来源于stack exchange,提问作者Sergino
相关产品推荐
相关产品推荐

