加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Node实现取得命令行参数的方法及操作是什么

发布时间:2023-08-17 11:25:57 所属栏目:语言 来源:
导读:今天这篇给大家分享的知识是“Node实现获取命令行参数的方法及操作是什么”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“Node实现获取命令行参数的方法

今天这篇给大家分享的知识是“Node实现获取命令行参数的方法及操作是什么”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“Node实现获取命令行参数的方法及操作是什么”文章能帮助大家解决问题。

在开发cli工具时,往往离不开获取指令中各种参数信息,接下来本文将带着你如何在Node.js中获取执行时的参数。

认识process

process是nodejs内置的一个对象,该对象提供了当前有关nodejs进程的信息。(例如获取当前进程id,执行平台等与当前执行进程相关的对象和方法)

node process文档

process.arg

在该对象中,有一个arg属性,它可以获取当前node执行时传入各个参数数据。

我们创建一个index.js文件,先打印下process.args里面是什么东西

console.log(process.arg)

// node index.js

[

'D:\\software\\nodejs\\node.exe',

'D:\\project\\script\\src\\index.js'

]

登录后复制

从上面的输出结果,可以得到当前执行的node程序路径(也就是process.execPath返回值)和执行的文件(index.js)路径,我们像使用其他cli工具一样添加一些参数试试

node index.js name=zhangsan age=18

登录后复制[

'D:\\software\\nodejs\\node.exe',

'D:\\project\\script\\src\\index.js',

'name=zhangsan',

'age=18'

]

登录后复制

可以看到我们传入的name参数与age参数也被获取到了

需要注意的是argv中的参数是通过空格来分割的

通常,我们会在命令行每个参数前面添加--字符,用来识别传入的各个参数。

例如在esbuild构建工具中

esbuild app.jsx --bundle --outfile=out.js

登录后复制

例如在vite构建工具中

vite --config my-config.js

登录后复制

修改一下上面的命令为

node index.js --name=zhangsan --age=18

登录后复制

将会得到如下输出结果

[

'D:\\software\\nodejs\\node.exe',

'D:\\project\\script\\src\\index.js',

'--name=zhangsan',

'--age=18'

]

登录后复制

封装获取参数函数

从上面两个例子和官方文档中,我们可以得知argv的前两个参数都是固定的,在获取用户传入的参数我们需要process.argv.slice(2)一下,只获取从下标2开始的元素。 也即是

[

'--name=zhangsan',

'--age=18'

]

登录后复制

有了这些数据之后,我们需要再进一步解构里面的参数,将前面的--去除掉,把key=value改变成{key:value}方便我们在开发中进行参数获取。 最终我们得到了这样子的函数:

获process.argv数组,并切片从下标2开始

判断数组中的每个值是否为--开头,是则视为用户传入参数

同样进行切片操作,获取下标2开始的字符,再通过=区分出对应的key和value,其返回的是[key,value]

最后,将这个二维数组传入到Object.fromEntries转换为一个对象

const arguments = process.argv.slice(2);

const params = Object.fromEntries(

arguments.reduce((pre, item) => {

if (item.startsWith("--")) {

return [...pre, item.slice(2).split("=")];

}

return pre;

}, []),

);

console.log(params)

// { name: 'zhangsan', age: '18' }

现在大家对于Node实现获取命令行参数的方法及操作是什么的内容应该都有一定的认识了吧,希望这篇能对大家有所帮助。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章