标签: node-commander

节点js commander args返回true而不是值

我想用节点和节点命令创建一个脚本,当我尝试获取我的args的值时,我得到值true而不是值本身.

例如,如果我在终端写这个:

node myfile.js -s somefile -d test

var program = require('commander');

program
  .version('0.0.1')
  .option('-s, --src', 'src csv file')
  .option('-d, --destination', 'destination csv file')
  .parse(process.argv);

console.log(program.src); // return true
console.log(program.destination); // return true
Run Code Online (Sandbox Code Playgroud)

我如何获得这个args的价值?

javascript node.js node-commander

20
推荐指数
3
解决办法
2414
查看次数

commander.js:如何指定必需的cli参数

我正在使用commander.js包来解析命令行参数:我想使一个标志非可选,API和git repo中的测试松散地提到需要一个标志,但我通常需要被击中头部有说明.

它实际上是否可能,如果不满足要求,脚本会抛出吗?

required-field command-line-arguments node.js node-commander

8
推荐指数
2
解决办法
7294
查看次数

在打字稿中使用指挥官

我尝试在打字稿中使用指挥官,我想为我的 cli 提供正确的类型。所以我从这段代码开始:

import * as program from "commander";

const cli = program
  .version("1.0.0")
  .usage("[options]")
  .option("-d, --debug", "activate more debug messages. Can be set by env var DEBUG.", false)
  .parse(process.argv);

console.log(cli.debug)
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

example.ts(9,17): error TS2339: Property 'debug' does not exist on type 'Command'.
Run Code Online (Sandbox Code Playgroud)

所以我尝试添加一个接口,如此处所述

import * as program from "commander";

interface InterfaceCLI extends commander.Command {
  debug?: boolean;
}

const cli: InterfaceCLI = program
  .version("1.0.0")
  .usage("[options]")
  .option("-d, --debug", "activate more debug messages. Can be set by env var DEBUG.", …
Run Code Online (Sandbox Code Playgroud)

node.js typescript definitelytyped node-commander

5
推荐指数
1
解决办法
7440
查看次数

带有可选+可变参数的 Node.js 指挥官

我把头靠在墙上,试图让节点的commander模块按照我想要的方式解析参数。

我希望将文件列表上传到命名数据库。有一个默认的数据库名称,因此用户不需要包含数据库参数。

我希望此命令按以下方式工作:

>>> ./upload.js --db ReallyCoolDB /files/uploadMe1.txt /files/uploadMe2.txt
(uploads "uploadMe1.txt" and "uploadMe2.txt" to database "ReallyCoolDB")

>>> ./upload.js /files/uploadMe1.txt /files/uploadMe2.txt
(uploads "uploadMe1.txt" and "uploadMe2.txt" to the default database)

>>> ./upload.js --db ReallyCoolDB
(returns an error; no files provided)
Run Code Online (Sandbox Code Playgroud)

我该如何实现commander?我已经尝试了很多东西,目前我坚持使用这个不起作用的代码:

// upload.js:

#!/usr/bin/env node

var program = require('commander');
program
  .version('0.1.0')
  .description('Upload files to a database')
  .command('<path1> [morePaths...]')
  .option('-d, --db [dbName]', 'Optional name of db', null)
  .action(function(path1, morePaths) {

    // At this point I simply want: …
Run Code Online (Sandbox Code Playgroud)

node.js node-commander

5
推荐指数
1
解决办法
4035
查看次数

与 Commander 的嵌套命令

我有以下代码

export const program = new Command();

program.version('0.0.1');

program
  .command('groups')
  .command('create')
  .action(() => console.log('creating'))
  .command('delete')
  .action(() => console.log('deleting-all'))

program.parse(process.argv)
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标是

groups creategroups delete

然而,删除的代码链接到创建。它识别groups createand groups create delete(我不想要)但不识别groups delete

javascript node.js node-commander

5
推荐指数
1
解决办法
1783
查看次数

Commander.js在没有命令的情况下调用时显示帮助

我正在使用commander.js编写一个与API交互的简单node.js程序.所有调用都需要使用子命令.例如:

apicommand get
Run Code Online (Sandbox Code Playgroud)

被称如下:

program
  .version('1.0.0')
  .command('get [accountId]')
  .description('retrieves account info for the specified account')
  .option('-v, --verbose', 'display extended logging information')
  .action(getAccount);
Run Code Online (Sandbox Code Playgroud)

我现在要做的是在apicommand没有任何子命令的情况下调用时显示默认消息.就像git没有子命令时调用一样:

MacBook-Air:Desktop username$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
       [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
       [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
       [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
       <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone      Clone a repository into a …
Run Code Online (Sandbox Code Playgroud)

javascript command-line node.js node-commander

4
推荐指数
1
解决办法
1292
查看次数

如何将 Node.js 命令行应用程序转换为单个可执行文件?

commander.js我使用Node.js 平台构建了简单的命令行应用程序。现在我想将其编译为简单exe文件,我可以直接执行。

意味着我想要单个可执行文件来完成完整的应用程序

这是我的应用程序结构

APP_ROOT
  | - package.json
  | - node_modules
  | - node_modules/.bin/myapp.bat
  | - node_modules/myapp/bin/myapp
  | - node_modules/myapp/bin/myapp-action1
  | - node_modules/myapp/bin/myapp-action2
Run Code Online (Sandbox Code Playgroud)

谢谢

windows command node.js node-commander

3
推荐指数
1
解决办法
6902
查看次数

创建nodejs cli select / options菜单

如何创建箭头键菜单列表?

输入eslint init或后我正在寻找类似的东西create-react-app <project>吗?(参见下图)

ESlint

eslint CLI菜单

约曼

create-react-app cli菜单

到处寻找创建CLI的方法,我发现NodeJS是一个可选选项,后面是一些工具:Commander.jsVorpal和/或create-new-cli

如果我走的路正确,如何创建CLI箭头键选择菜单?

command-line-interface node.js node-commander vorpal.js

3
推荐指数
1
解决办法
3653
查看次数

Commander.js 收集多个选项总是包含默认值

我正在使用commander.js来解析命令行参数,我试图收集一个可以多次出现的可选参数,它总是返回我设置的选项和默认选项。

function collect (val, memo) {
    memo.push(val);
    return memo;
}

program
    .command('run <param>')
    .action(function run(param, options) {
        console.log(param);
        console.log(options.parent.config);
    });

program
    .option('-c, --config <path>', 'Config', collect, ["/path/to/default"])
    .parse(process.argv);
Run Code Online (Sandbox Code Playgroud)

当我这样调用脚本时:

index.js run some -c "/some/path" -c "/other/path"
Run Code Online (Sandbox Code Playgroud)

它打印:

[ '/path/to/default', '/some/path', '/other/path' ]
Run Code Online (Sandbox Code Playgroud)

但它应该只打印:

['/some/path', '/other/path' ]`
Run Code Online (Sandbox Code Playgroud)

当我在没有-c参数的情况下调用它时,它可以正常工作,使用默认值打印数组。我怎样才能解决这个问题?

javascript node.js node-commander

2
推荐指数
1
解决办法
5332
查看次数

NodeJS Commander 结构化子命令

我是指挥官的新手,我正在尝试实现这样的命令树:

|- build
|    |- browser (+ options)
|    |- cordova (+ options)
|    |- no subcommands, just options
|- config
|    |- create (+ options)
Run Code Online (Sandbox Code Playgroud)

是否可以将这些命令拆分成多个文件,例如有点像这样:

中央档案:

|- build
|    |- browser (+ options)
|    |- cordova (+ options)
|    |- no subcommands, just options
|- config
|    |- create (+ options)
Run Code Online (Sandbox Code Playgroud)

构建命令的文件:

program.command('browser').description(...);
program.command('cordova').description(...);
program.option(...);
Run Code Online (Sandbox Code Playgroud)

配置命令的文件:

program.command('create').description(...);
Run Code Online (Sandbox Code Playgroud)

我知道 Git 风格的子命令,但这些似乎需要可执行文件(我只有常规的 JS 文件)

node.js node-commander

2
推荐指数
2
解决办法
1427
查看次数

如何通过 Nest-commander 创建和使用终端命令?

所以,我有这个 NestJS 项目,出于学习目的,我想使用Nest-commander创建一个可以在终端上执行的命令(这样我可以从其他服务调用函数),也出于学习目的,每当我调用它时命令,它应该调用服务文件上的函数,从数据库中获取用户。

它看起来像这样:

> run myCommand -username UsernameString
Run Code Online (Sandbox Code Playgroud)

每当从终端调用该命令时,我都会调用getUser()fromAnotherService来查找具有特定 UsernameString 的用户。我阅读了文档,但无法理解其中的内容,所以......

  1. 如何从终端调用命令?
  2. 是否可以在应用程序中调用相同的命令?

javascript node.js typescript node-commander nestjs

0
推荐指数
1
解决办法
6086
查看次数