位置: 编程技术 - 正文

Node.js编写CLI的实例详解(nodejs cli)

编辑:rootadmin

推荐整理分享Node.js编写CLI的实例详解(nodejs cli),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs include,nodejs include,nodejs cgi,node.js curl,nodejs cicd,nodejs cli,node.js c,nodejs cli,内容如对您有帮助,希望把文章链接给更多的朋友!

Why Node.js&#;

常用的用来编写CLI的语言有 python, ruby, perl, Node.js等等。 为什么选取Node.js作为CLI的语言编写工具呢?有三个理由:

对Javascript语言更加熟悉 npm 完善的生态系统 npm OS无关的包管理机制

主要原因还是归咎于npm 完善的生态,目前npm官方有.5万个三方包可供使用,你可以很方便的使用一些已经编写的很不错的轮子去帮你快速开发。另一方面,你不需要考虑跨平台的安装问题,比如OSX上的homebrew、Debian的aptitude、CentOS 上的yum。如果使用shell或者其它语言来编写CLI,需要针对各个主流OS来做兼容并且发布到不同的平台。

看个demo

注: 此处的Logo使用的是figlet这个npm包来帮助生成

npm关联CLI的基本原理

如何让Node.js编写的包可执行?其实很简单,只需要在package.json里面增加一个bin字段。模块发布到npm上后,开发者安装这个包的时候会检查是否有bin字段,如果有bin字段则会使用软链接的方式创建可以全局使用的命令。

如果模块采用全局安装的方式,对于类unix系统,会在/usr/local/bin目录创建软链接,对于windows系统,在C:UsersusernameAppDataRoamingnpm目录创建软链接。

如果模块采用局部安装的方式,则会在项目内的./node_modules/.bin目录创建软链接。

配置好的package.json如下:

CLI基本命令设计

Feflow的技术架构

Feflow总体分为3个模块,包括parser命令行参数解析、核心命令以及插件机制。设计插件主要是为了保持整体功能的稳定,避免频繁升级;同时开放能力,支持开发者接入,完善整体的生态。

Node.js编写CLI的实例详解(nodejs cli)

扫描器的实现

在一个工程项目中,有各种各样的规范,比如项目命名规范、描述规范、目录结构规范、README.md规范,是否增加基本监控等等。编写扫描器scanner,对某个Group里面的所有业务项目进行扫描,将不符合规范的仓库和不符合规范的地方列举出来,并且捞出责任人。最后通过邮件及定时任务发送给相关同学,并且敦促修改。扫描器流程图如下:

首先,需要一个任务队列,队列里面存放不同的扫描任务。每个扫描任务依赖相关的文件信息或者Commit信息,这个时候需要调用Git code提供的三方API进行文件信息拉取。之后,需要编写一个规则引擎,这个规则引擎里面有多个规范相关的检查工具,解析完成后会将结果生成HTML格式的字符串。最后调用邮件服务和定时任务服务去通知相关开发者。

插件机制设计

插件机制实现

插件机制的实现包括两个部分:插件注册机制和插件发现机制。feflow要求插件必须以feflow-plugin-开头或者 generator-开头,generator作为一种特殊的插件,插件代码以npm包的形式存储和管理。运行feflow install plugin命令时,会通过npm 的 regsitry检查是否存在插件,如果存在,会检查当前插件是否是最新版本。如果不是最新版本,则提示用户是否需要更新。然后将插件下载到Home目录下的.feflow目录(Windows系统为"C:Usersusername.feflow" 目录)下的node_modules里面,并且写入到配置文件里面。

本地模块注册机制

本地模块发现机制

npm 的 registry服务

npm的查询服务网址: registry网址后面跟上模块名、版本好可以查询模块详细信息,包括最新版本,以此来判断模块是否需要更新。比如:React的最新版本可以通过 来获得 返回的JSON对象里面有个dist.tarball属性,是某个版本的压缩包地址

常用三方包分享

osenv 方便的获取不同系统的环境和目录配置 figlet 命令行炫酷的Logo生成器 meow 命令行帮助命令封装 inquire 强大的用户交互 chalk 让命令行的output带有颜色 easytable 表格信息展示,用于升级包的提示 minimlist 用户输入的参数解析 shelljs Node.js执行shell命令 clui 进度条

遇到的问题

1,windows下用户未设置HOME环境变量导致报错

解决办法: 由于windows下HOME环境变量并非默认存在,因此不能直接使用。判断process.platform === ‘win',优先使用HOME变量,否则使用USERPROFILE变量;建议使用osenv这个包。

2,OSX平台运行feflow报错: env: noder: No such file or directory

解决办法: 由于类unix系统的换行符号为n,而windows系统为nr。修复换行问题。可以在工程根目录下加.gitattributes文件,设置* text eol=lf,这样git提交时就不会讲LF转换成CRLF

标签: nodejs cli

本文链接地址:https://www.jiuchutong.com/biancheng/380784.html 转载请保留说明!

上一篇:node.js调用Chrome浏览器打开链接地址的方法(node.js调用第三方物流跟踪api)

下一篇:详解使用nodeJs安装Vue-cli(node.js的安装方法)

  • 个人所得税申报操作流程
  • 最惠国税是一种真正意义上的优惠关税
  • 递延所得税资产借贷方向
  • 库存商品损坏怎么做账
  • 社保年检申报错误怎么办
  • 向境外支付赔偿金需要发票么
  • 存款利息收入需要缴纳所得税吗
  • 拓展费税收分类编码
  • 汽车开公司发票可以抵税吗?
  • 行政事业单位无偿调拨资产会计处理
  • 承兑汇票丢了如何追回
  • 清包工一般纳税人简易计税能开专票
  • 股权转让评估费可以有公司承担吗
  • 当月确认收入下年怎么算
  • 固定资产累计折旧完了怎么办
  • 合伙企业缴纳税款时间
  • 外地预缴企业所得税汇算清缴退税
  • 失控发票进项税额转出申报表填写
  • 房产税的征收对象有哪些
  • 购物发票的税是由谁承担
  • 增值税发票丢失可以用复印件入账么
  • 本期免税收入是什么
  • 辅助生产成本科目月末有余额吗
  • 发票已认证开票方未报税要怎么作废?
  • 固定资产报废处理流程图
  • 跨境电子商务零售进口商品的单次交易限值
  • 供应商质量扣款
  • 销售使用过的固定资产3%减按2%
  • 出售应收债权属于收入吗
  • 公司连续几年不向股东分配利润
  • 同步和异步的关系
  • 供热企业的税收分类编码
  • 不动产司法拍卖税费
  • php远程下载源码
  • 编制合并财务报表的程序主要包括
  • 微信小程序开发公司
  • 原生js获取元素高度
  • 哪些费用计入管理费用中
  • 印花税申报未扣款在哪里查询
  • 库存现金科目的辅助核算项目为日记账
  • 建筑工程企业所得税预缴
  • 增值税一般纳税人可以开普票吗
  • 一次性计提和一次性支付的区别
  • 制造车间买来刀具怎么办
  • 工资预提和计提的区别
  • 财务报表申报错误情况说明范文
  • 个税跨月更正申报怎么做
  • 安置房是交付的时候交钱吗
  • 附加税费怎么计算
  • 小规模纳税人普票税率是多少
  • 计提折旧的固定资产平均总值怎么算
  • 有形动产租赁服务属于现代服务吗
  • 房产税城镇土地使用税申报期限
  • 亏损企业研发费用必须加计扣除吗
  • 城建税的征收范围不包括农村
  • 构建固定资产的借款利息资本化文件依据
  • 印花税是如何计征的
  • 政府补助计入资本公积吗
  • 小微企业记账必须有会计证吗
  • 装修公司开劳务费怎么选择税控编码
  • 年度纳税总额包括个税吗
  • 报销单粘贴单
  • 事业单位不允许办企业是哪个文件要求的
  • 用友t6运行特别慢
  • 解析包错误怎么解除
  • linuxvlc安装
  • unix操作系统有何特点?
  • win32k.sys是什么
  • ubuntu 改名
  • 关闭gui引导有什么用
  • windows8怎么查看所有程序
  • win8系统分辨率调不了
  • windowsxp我的电脑怎么调出来
  • 因以下文件的损坏或者丢失,windows无法启动hal.dll
  • 无法收到steam短信代码
  • win7旗舰版重装系统教程
  • adb push、adb install 和强制安装
  • 常规巡察和专项巡察相结合
  • 开票系统税控盘在哪里
  • 会计开票要填哪些信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设