2016-07-07 53 views
1

我使用yargs来创建子为“建”,“链接”,“干净”的构建工具等如何在yargs中指定默认子命令?

我希望能够输入./build.js不带任何参数,并调用“构建“子命令处理程序作为默认值。

我能做到这一点正是如此:

var argv = yargs 
    .usage("I am usage.") 
    .command('bundle', 'Create JS bundles', bundle) 
    .command('link', 'Symlink JS files that do not need bundling', link) 
    .command('clean', 'Remove build artifacts', clean) 
    .command('build', 'Perform entire build process.', build) 
    .help('help') 
    .argv; 
if (argv._.length === 0) { build(); } 

但似乎有点哈克给我,这很可能会造成问题,如果我想任何其它位置参数添加到“建设”子命令。

有没有什么办法可以在yargs的语义中完成这个任务?有关.command()的文档可能会更清晰。

回答

2

Yargs似乎并未提供此功能。 NPM上有一个第三方软件包,可以增加纱线的用量,以满足您的需求。 https://www.npmjs.com/package/yargs-default-command

var yargs = require('yargs'); 
var args = require('yargs-default-command')(yargs); 

args 
    .command('*', 'default command', build) 
    .command('build', 'build command', build) 
    .args; 
+0

为什么对节点生态系统中所有内容的回答都不可避免地会“安装另一个软件包”? – Tedward

+1

因为尝试解决所遇到的每个问题的单片库都很麻烦并且难以维护 – arkanciscan

+0

自v7以来本机支持:https://github.com/yargs/yargs/blob/master/docs/advanced.md – sthzg