在开发cli
工具时,往往离不开获取指令中各种参数信息,接下来本文将带着你如何在Node.js
中获取执行时的参数。【相关教程推荐:nodejs视频教程 、编程视频】
(相关资料图)
认识process
process
是nodejs
内置的一个对象,该对象提供了当前有关nodejs
进程的信息。(例如获取当前进程id,执行平台等与当前执行进程相关的对象和方法)
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
参数也被获取到了
通常,我们会在命令行每个参数前面添加--
字符,用来识别传入的各个参数。
例如在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中怎么获取命令行中的参数的详细内容,更多请关注php中文网其它相关文章!