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/

作者:
iTech

微信公众号: cicdops

出处:
http://itech.cnblogs.com/

github:
https://github.com/cicdops/cicdops

nodejs实现命令行工具

Original: https://www.cnblogs.com/itech/p/13080374.html
Author: iTech
Title: nodejs实现命令行工具

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552005/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球