nodejs实现命令行工具
为什么使用nodejs实现命令行工具
Node.js是一个基于事件驱动I/O的JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
众所周知,javascript已经成为最流行的编程语言,以前javascript只是用来实现web前端功能,但是nodejs的出现使得javascript不仅可以服务于web的后端,还能够作为通用的脚本语言,类似python/perl一样,实现更多的桌面相关的任务。
nodejs除了于web框架一起实现web后端的功能,作为devops我们可以使用nodejs做很多其他的事情:
- 遍历目录,读写json和yaml配置文件;
- 异步执行,或者多进程调用外部系统命令;
- http请求,解析,或者生成web;
- 查询数据库mango,redis,其他数据库;
- 解析日志,监听问题,发送邮件;
安装nodejs
wget https://nodejs.org/dist/v12.18.0/node-v12.18.0-linux-x64.tar.xz
tar -xvf node-v12.18.0-linux-x64.tar.xz
mv node-v12.18.0-linux-x64 nodejs
ln -s /app/software/nodejs/bin/npm /usr/local/bin/
ln -s /app/software/nodejs/bin/node /usr/local/bin/
国内用户使用淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
然后使用cnpm来安装其他的模块
实现第一个helloworld的命令
#!/usr/bin/env node
console.log('hello world');
增加权限
chmod u+x yourscript
运行./yourscript
hello world
简单的脚本参数解析
process.argv中包含了所有的参数
脚本中增加输入来查看参数:console.log(process.argv)
执行脚本:./yourscript -g -f
输出为:[ 'node', '/home/george/yourscript', '-f', '-g' ]
程序的退出
if (err) {
process.exit(1);
} else {
process.exit(0);
}
将命令行工具打包为可安装的npm包
生成package.json:npm init
修改package.json:
"name": "helloworld”,
"author": "cicdops",
"license": "Apache-2.0",
+ "bin": {
+ "helloworld": "./index.js"
+ }
本地安装:
npm install -g
$ helloworld
Hello, world!
其他人可以通过命令安装:npm install -g helloworld
参考:
https://blog.developer.atlassian.com/scripting-with-node/
https://shapeshed.com/command-line-utilities-with-nodejs/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人