Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在yargs中指定默认子命令?_Javascript_Node.js_Yargs - Fatal编程技术网

Javascript 如何在yargs中指定默认子命令?

Javascript 如何在yargs中指定默认子命令?,javascript,node.js,yargs,Javascript,Node.js,Yargs,我正在使用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 bundli

我正在使用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(); }
但对我来说,它似乎有点不成熟,如果我想向build子命令添加任何额外的位置参数,它可能会导致问题


在yargs的语义范围内有什么方法可以实现这一点吗?.command上的文档可能更清晰。

Yargs本身似乎没有提供此功能。NPM上有一个第三方软件包,它可以增强yargs以满足您的需求


Yargs本身似乎并没有提供这种功能。NPM上有一个第三方软件包,它可以增强yargs以满足您的需求


正如@sthzg所评论的,您现在可以:


正如@sthzg所评论的,您现在可以:


为什么节点生态系统中的所有问题的答案都不可避免地安装另一个包?因为试图解决遇到的所有问题的单片库都很麻烦且无法维护,这从v7开始就得到了本机支持:为什么节点生态系统中的所有问题的答案都不可避免地安装另一个包?因为试图解决遇到的所有问题的单片库都很麻烦且无法维护。自v7开始,本机就支持这一点:
var yargs = require('yargs');
var args = require('yargs-default-command')(yargs);

args
  .command('*', 'default command', build)
  .command('build', 'build command', build)
  .args;
const argv = require('yargs')
  .command('$0', 'the default command', () => {}, (argv) => {
    console.log('this command will be run by default')
  })