nodejs 命令行获取参数

195 阅读1分钟

文件、代码准备

  • 新建文件 index.js
  • 第一行写 #!/usr/bin/env node
  • 第二行写 use strict 严格模式
  • 命令行参数 可以从 process.argv里面获取
    • 这是一个数组
    • 数组中索引为 0 的是node命令的完整路径
    • 数组中索引为 1 的是被执行文件的完整路径
    • 从第二个开始则为传入的参数
    • 并且按空格分隔
  • 比如 node index.js name=app hi happy
  • 就会得到一个数组
0: /usr/local/bin/node // 完整路径
1: /Users/node-demo/index.js // 被执行文件的完整路径
2: name=app //参数
3: hi //参数
4: happy //参数

将结果过滤为纯参数

  • 那么, 如何只获取参数呢
  • 使用 Array.slice(2)截取就可以的到只有参数的数组
  • 但是这些参数只能通过数字索引来获取
const args = process.argv.slice(2)
args[0]
args[1]

使用 minimist库实现字典方式取值

  • 那么如何可以通过 Map 键值对的方式获取呢?
    • 安装 minimist 库,帮助我们来处理参数
const args = require('minimist')(process.argv.slice(2))
args['name'] //app
// 需要注意的是!每个参数之前需要使用双破折号
node app.js --name=app

需要注意的是!需要通过字典方式取值的参数之前需要使用双破折

  • 那么不加双破折号的参数如何获取呢

    • 举个例子:
node index.js --name=app --hi=hello yoyo
const args = require('minimist')(process.argv.slice(2))
console.log((args));
// { _: [ 'yoyo' ], name: 'app', hi: 'hello' }
  • 可以看出 通过 访问 args["_"] 可以将为命名的参数都打印出来。

image-20230316164506126