2

yargs用来创建一个带有“build”、“link”、“clean”等子命令的构建工具。

我希望能够./build.js不带参数输入并默认调用“build”子命令处理程序。

我能够做到这一点:

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(); }

但这对我来说似乎有点 hacky,如果我想在“build”子命令中添加任何额外的位置参数,它可能会导致问题。

有没有办法在 yargs 的语义中实现这一点?上的文档.command()可能更清楚。

4

2 回答 2

4

正如@sthzg 所评论的,您现在可以使用默认命令

const argv = require('yargs')
  .command('$0', 'the default command', () => {}, (argv) => {
    console.log('this command will be run by default')
  })
于 2018-08-30T01:40:19.937 回答
1

Yargs 本身似乎不提供此功能。NPM 上有一个第三方包,可以增强 yargs 来做你想做的事。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;
于 2016-07-07T22:19:33.427 回答