📜  nodejs 命令行参数 - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:44.381000             🧑  作者: Mango

Node.js命令行参数

Node.js是一个开源的跨平台JavaScript运行环境,可以在服务器端运行JavaScript代码。它提供了一个命令行界面(CLI),让开发者可以使用命令行来执行JavaScript代码。

Node.js的命令行界面是通过在终端窗口里输入node命令来启动的,启动后就可以在命令行里输入JavaScript代码了。不过,在实际的开发中,我们可能需要通过命令行参数来控制程序的行为,这就需要用到Node.js的命令行参数了。

命令行参数基础

命令行参数可以通过在执行命令时在命令后面加上参数来传递,参数之间用空格分隔。比如,下面的命令就是在执行script.js脚本,并且传递了一个参数--name和它的值Tom

node script.js --name Tom

在Node.js中,我们可以通过process.argv数组来获取命令行参数。process.argv数组的第一个元素是process.execPath,表示Node.js的可执行文件路径;第二个元素是当前脚本文件的路径;后面的元素是传递的命令行参数。举个例子,如果我们在script.js脚本中打印process.argv数组,会得到下面的输出:

console.log(process.argv);
// [
//   '/usr/bin/node', 
//   '/path/to/your/script.js',
//   '--name', 
//   'Tom'
// ]
解析命令行参数

虽然Node.js可以通过process.argv来获取命令行参数,但是如果参数很多的话还是比较麻烦的。为了方便解析命令行参数,Node.js提供了一个内置的yargs模块,可以让我们更加方便地处理命令行参数。

yargs模块提供了一个链式API,可以方便地定义命令行参数。我们可以通过yargs模块的command()方法来定义命令行参数。比如,我们可以定义一个名为hello的命令,可以接受两个参数:nameage

const yargs = require('yargs');

yargs.command(
  'hello',
  'Say hello',
  (yargs) => {
      yargs.positional('name', {
          describe: 'Your name',
          type: 'string',
          demandOption: true
      }).positional('age', {
          describe: 'Your age',
          type: 'number',
          demandOption: true
      });
  },
  (argv) => {
      console.log(`Hello ${argv.name}! You are ${argv.age} years old!`);
  }
);

yargs.parse();

运行以上代码,可以执行下面的命令来输出Hello Tom! You are 18 years old!

node script.js hello Tom 18

命令行参数的类型可以是stringnumberboolean等,yargs模块提供了丰富的选项来处理各种类型的参数。

结论

Node.js的命令行参数是非常方便的工具,可以让我们更加方便地控制程序的行为。虽然Node.js可以通过process.argv来获取命令行参数,但是使用内置的yargs模块可以更加方便地解析和处理命令行参数。