位置: 编程技术 - 正文

Node.js 使用命令行工具检查更新(node.js使用教程)

编辑:rootadmin

推荐整理分享Node.js 使用命令行工具检查更新(node.js使用教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js的使用,nodejs 命令行工具,node.js常用命令,node.js运行命令,node.js的使用,node.js使用教程,node.js常用命令,node.js运行命令,内容如对您有帮助,希望把文章链接给更多的朋友!

随着 Node.js 的“走红”,使用 Node.js 开发命令行工具越来越简单。一个成熟的命令行工具应该从一开始就要考虑好之后的版本更新如何“优雅”的告知用户。最好的方法当然是当用户在终端执行命令时,将相关信息提示给用户。

这篇文章将给出一个易用、高效、可定制的方法。源码在这里: GITHUB ,欢迎大家顺手点赞。接下来我将讲解其实现思路。

使用

我们先简单看看这个 npm 包的使用方法:

效果如图:

实现

使用方法很简单,我们一起来看看其实现方法。

需求

我们先来梳理下需求,一个命令行检查更新器应该至少提供如下功能:

能从远程获取最新版本

能根据检查结果进行提示

在版本不兼容时可以直接退出,强制用户升级程序

获取版本

获取最新版本这个功能看起来很简单,就是发送一个请求从“某处”获取信息。但是有一些问题需要我们考虑:

从哪里获取版本信息?

获取版本信息的策略是怎样的?(什么时候获取?获取的信息如何处理?)

从哪里获取版本信息

我们的命令行工具一般都是使用 npm 进行分发,最简便的方法就是直接通过 registry 获取。通过请求 就可以得到 package 对应 tag 的版本信息。结果类似下面这样:

在实际实现时,我们应该允许调用者自定义 registry 地址、请求的 dist-tag 等,这样可以有更多的定制性。

获取版本信息的策略

首先想到的方法是用户每次执行命令时都去获取一次版本信息,这样的获取策略应该是最简单和实时的。

但是这个策略其实并不合适:

每次执行命令都要去发请求进行检查,如果网络延迟,会阻塞命令执行,影响用户体验

Node.js 使用命令行工具检查更新(node.js使用教程)

工具的版本更新其实并不会很频繁,没有必要进行实时检查

网络请求的影响因素很多,不能保证每次都成功,应该提供本地缓存机制来存储请求成功的结果,避免版本信息的不可用

综合上面的几点,我们设计如下的获取策略:

将发送网络请求获取版本信息的逻辑放在一个独立的后台进程去执行,保证不阻塞主命令执行

请求成功后将版本信息、检查时间缓存到用户机器

每次执行命令时,只是读取本地缓存下来的版本信息,不去发送网络请求

根据缓存下来的检查时间和当前时间,在一个间隔之内不去额外创建后台检查进程

将上面的策略翻译成代码大概就是下面这样:

后台进程执行的 _check.js 文件也很简单,如下所示:

提示

当版本更新了,我们应该在终端提示用户。这里有两个问题:

提示文案的问题

提示文案显示间隔的问题(一直显示?每隔一段时间显示?)

这里我们采取的策略是:

提供默认提示文案,清晰的说明当前版本、最新版本、更新方法,允许调用者自定义提示文案

只要有更新就一直显示提示文案,因为我们希望用户经常的进行更新

实现代码大概如下:

强制升级

对于 npm 模块来说,版本 a.b.c 的更新一般有三种情况:

patch:c 位,小版本更新,一般是 bug 修复

minor:b 位,中版本更新,一般增加新功能、bug 修复

major,a 位,大版本更新,一般是不兼容的升级

我们希望当远程版本的更新如果是 major 形式,命令行工具将直接退出,强制用户进行升级后才能使用。这可以保证我们推送一个大版本后,所有的用户都能够马上更新掉,而不是继续使用老版本,造成版本碎片的问题。

实现代码大致如下:

总结

命令行检查更新看似简单,其实仔细思考,还是有很多细节。希望这篇文章对你有所启发。

简单谈谈关于 npm 5.0 的新坑 前言前几天升级了Node.jsv8.0后,自带的npm也升级到了5.0,第一次使用的时候确实惊艳到了:原本重新安装一次模块要十几秒到事情,现在一秒多就搞定了

nodeJS实现路由功能实例代码 前面的话本文将使用NodeJS实现较复杂应用的路由功能结构项目结构如下代码如下功能【router.js】//加载所需模块varhttp=require('http');varurl=require('url');varfs=re

node.js中cluster的使用教程 本文主要给大家介绍了关于node.js中cluster使用的相关教程,分享出来供大家参考学习,下面来看看详细的介绍:一、使用NODE中cluster利用多核CPUvarcluster=re

标签: node.js使用教程

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

上一篇:gulp解决跨域的配置文件问题(解决跨域的原理)

下一篇:Nodejs 和Session 原理及实战技巧小结(nodejs和jsp)

  • 小规模纳税人不开票需要纳税吗
  • 财务软件购买税点多少钱
  • 缺少订单停工费用如何做账
  • 生产车间财产保险费计入什么费用
  • 临时人员劳务费有哪些?
  • 应交增值税减免税款怎么结转
  • 工商年报实缴出资额是实收资本吗
  • 非货币性资产交换的记忆口诀
  • 一般纳税人税种认定有几个增值税要怎么申报呀
  • 企业的季度所得税怎么算
  • 在建的项目
  • 企业工资薪酬包括哪些内容
  • 钱汇错需要退回应该怎么做分录?
  • 低值易耗品报废时
  • 2017年7月1日开始实施的税法新规
  • 不经常发生应税行为的企业可以选择按小规模纳税人纳税
  • 公司注销固定资产怎么处理税怎么交
  • 如何理解结转资金与结余资金的区别
  • 待处理财产损益科目编码
  • 工伤医疗费会计分录
  • 固定资产清理产生的费用
  • 代缴社保缴费基数是怎么算的
  • 政府投资农业项目
  • 所得税年报能撤销吗
  • 浅谈linux的发展方向和应用范围
  • 银行保证金户利息计算公式
  • win10怎么推送win11
  • 支付公司保洁费未开发票
  • 销售商品尚未发出会计分录
  • PHP:curl_errno()的用法_cURL函数
  • 高校教材pdf
  • 只有收据没有发票是不是逃税
  • 事业单位会计准则是否废止
  • 员工报销的话费要缴纳个税吗?
  • 个体户可以不办公户吗
  • 发票作废有费用吗
  • 为什么印花税不算应交税费科目
  • 租房开的发票收的税怎么做账?
  • 个人出租房可开发票吗
  • 没有销售收入月报怎么填
  • php采集器
  • 国家税务总局关于营改增后土地增值税
  • 公司必须要申报工资流水吗
  • 高效刷题app
  • mongodb 入门
  • 哪个网站可以免费学电脑
  • 一般纳税人作废小规模时开的发票怎么报税
  • 个人所得税房屋贷款扣除比例怎么选
  • 分页存储过程是什么
  • DB2 9(Viper)快速入门
  • 进项税额不得抵扣的情况
  • mysql开启事务语句
  • 住房公积金中的钱可以当首付吗?
  • 如何搞公司
  • 免抵退税会计处理
  • 跨年租赁费会计分录
  • 电子商务中流量的定义
  • 房地产开发企业分为几个等级
  • 如何调整银行存款余额
  • 季度申报表弥补以前年度亏损
  • sqlserver的分页语句
  • win10简单版
  • 如果不用2b橡皮擦2b铅笔 能扫的出来吗
  • win8.1iso
  • 360卫士重装电脑够进入不了桌面
  • win7系统硬盘
  • centos7如何设置ip
  • windows中创建的任务计划可以多久执行一次任务?
  • 列举linux常用的几个命令
  • python计算两个数的最大公约数
  • Node.js中的核心模块包括哪些内容?
  • Linux 下mysql通过存储过程实现批量生成记录
  • install ubuntu kylin
  • jquery中选择器有哪些
  • js翻页效果的实现原理
  • 税务案件移送案件的法律条款
  • 地方税务局稽查局卢永胜
  • 广东省税务登记网
  • 远程视频监控设备
  • 地方税务局几点下班
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设