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/
nodejs实现命令行工具的更多相关文章
- node命令行工具—cf-cli
音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...
- nodejs 编写(添加时间戳)命令行工具 timestamp
Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...
- Nodejs 如何制作命令行工具
# 全局安装,安装报错是需要前面加上sudo $ sudo npm install -g xxxb # 输出帮助 $ xxxb -h Usage: xxxb 这里是我私人玩耍的命令哦![options ...
- NodeJS 安装cnpm命令行工具
在安装之前,请确保已安装Git和NodeJS. cmd机内命令窗口,输入以下命令: git config --system http.sslcainfo /bin/curl-ca-bundle.crt ...
- 用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具
用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具 前言 上周,同事抱怨说 react 怎么不能像 angular 那样,使用命令行工具来生成一个组件.对呀,平时工作时,想要创建 ...
- 【Nodejs】326- 从零开发一个node命令行工具
本文由 IMWeb 社区授权转载自腾讯内部 KM 论坛.点击阅读原文查看 IMWeb 社区更多精彩文章. 什么是命令行工具? 命令行工具(Cmmand Line Interface)简称cli,顾名思 ...
- 了不起的NodeJS命令行工具
一个命令行工具实例 这个实例包含了处理进程中的stdin和stdout相关的api,以及文件系统有关的api,使用回调和事件机制来实现并发,主要锻炼基于非阻塞事件的I/O编程中的流控制. // 声明模 ...
- 如何用Node编写命令行工具
0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...
- 使用命令行工具npm新创建一个vue项目
使用vue开发项目的前期工作可以参考前面写的: Vue环境搭建及node安装过程整理 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的 ...
- JDK的命令行工具系列 (二) javap、jinfo、jmap
javap: 反编译工具, 可用来查看java编译器生成的字节码 参数摘要: -help 帮助 -l 输出行和变量的表 -public 只输出public方法和域 -protected 只输出publ ...
随机推荐
- biancheng-算法教程
目录http://c.biancheng.net/algorithm/ 1算法是什么2时间复杂度和空间复杂度3递归算法4斐波那契数列5分治算法6找数组的最大值和最小值7汉诺塔问题8贪心算法9部分背包问 ...
- MySQL为Null导致的四大坑
"兵马未动粮草先行",看完了相关的配置之后,我们先来创建一张测试表和一些测试数据. -- 如果存在 person 表先删除 DROP TABLE IF EXISTS person; ...
- Java类加载机制与JVM运行时数据区各逻辑内存区域与JDK的版本相关差异浅谈
Java类加载机制与JVM运行时数据区各逻辑内存区域与JDK的版本相关差异浅谈 [摘要] JVM(Java Virtual Machine)作为Java研发人员工作的每天都会接触到的虚拟机,其运行机制 ...
- 【译】我们最喜欢的2024年的 Visual Studio 新功能
去年,Visual Studio 团队发布了许多新的面向开发人员的改进和 AI 集成,其中许多直接来自您在开发者社区的反馈.在这篇文章中,我们将重点介绍2024年团队最喜欢的功能,这些功能可以提高生产 ...
- react给当前元素添加一个类以及key的作用
给当前元素添加一个类是通过className来处理的: 引入css;直接from XXXX import React, { Component } from "react"; // ...
- Air实现Go程序的热重载(热加载)
简介: air是Go的热加载工具,它可以监听文件或者目录的变化,自动编译,重启程序,提高开发的工作效率. 场景: 在代码修改后需要通过ctrl+c来停止项目,go run的方式来再次重启项目,在开发进 ...
- C#中使用正则将字符串中某字符不区分大小写并按全字匹配替换为空
具体代码如下所示: //将字符串中desc不区分大小写并按全字匹配替换为空 var strText = "CreatDeSce DeSc,UserName AsC"; string ...
- 上海站 | 2025 Seeed x LeRobot 具身智能黑客松报名开启!
欢迎来到 Physical AI 的最前沿!Seeed x LeRobot 具身智能黑客松现邀请所有对在机器人领域训练模仿学习策略,并实时进行推理部署感兴趣的人,共同创造具有影响力的创新解决方案.在这 ...
- led色块是什么,bin指值是什么
色块其实就是色温的区域范围. LED的色温按标准是分段的, 既然是分段,就有一个最大值和最小值,在色坐标系中是一个,X和Y的坐标对应的也就有一个最大值和最小值,这样一个色温段就是以小块的区域,即所谓的 ...
- ffmpeg-5.0-essentials_build 下载
ffmpeg-5.0-essentials_build下载放到蓝奏里了 https://wwz.lanzoub.com/if9xq02pttkb密码:ee8i