logo
Published on

如何在Node.js程序中传递和接收命令行参数?

Authors
  • Name
    Twitter

在Node.js开发中,经常需要通过命令行传递参数来控制程序的行为。本篇博客将详细介绍如何在Node.js程序中传递和接收命令行参数,并使用command-line-args库来简化这个过程。

基础用法

首先,我们来看看如何使用command-line-args库来设置命令行参数。可以使用以下多种方式传递参数:

$ example --verbose --timeout=1000 --src one.js --src two.js
$ example --verbose --timeout 1000 --src one.js two.js
$ example -vt 1000 --src one.js two.js
$ example -vt 1000 one.js two.js

为了接收这些参数,首先需要创建一个选项定义列表,用于描述应用程序接受的选项。type属性是一个设置函数,传递的值会经过这个函数处理,使你能完全控制接收的值。

const optionDefinitions = [
  { name: 'verbose', alias: 'v', type: Boolean },
  { name: 'src', type: String, multiple: true, defaultOption: true },
  { name: 'timeout', alias: 't', type: Number }
];

接下来,使用commandLineArgs()方法解析这些选项:

const commandLineArgs = require('command-line-args');
const options = commandLineArgs(optionDefinitions);

此时,options对象将会如下所示:

{
  src: [
    'one.js',
    'two.js'
  ],
  verbose: true,
  timeout: 1000
}

高级用法

除了上述的典型用法外,command-line-args库还支持更高级的语法形式。

git风格的命令语法

可以使用如下形式的命令:

$ executable <command> [options]

例如:

$ git commit --squash -m "This is my commit message"

docker风格的命令和子命令语法

可以使用如下形式的命令:

$ executable <command> [options] <sub-command> [options]

例如:

$ docker run --detached --image centos bash -c yum install -y httpd

生成使用指南

当传递--help选项时,通常会生成一个使用指南。这可以使用command-line-usage库来实现。以下是一些示例,详细的创建方法可参考官方文档

一个典型的使用指南示例:

Image 1: usage

polymer-cli 的使用指南也是一个很好的参考实例。

Image 2: usage

进一步阅读

如果你想了解更多,请参阅wiki获取更多示例和文档。