Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【工具】管理NPM 包版本号

【工具】管理NPM 包版本号

作者头像
神仙朱
发布于 2020-06-28 08:29:18
发布于 2020-06-28 08:29:18
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

后面会把前端进阶的课程内容都总结一遍。有些都是很常见的知识,但是为了梳理自己的知识树,所以尽量模糊的地方都会记录

笔记列表在公众号右下角

当我们的包需要更新版本的时候,我们是这么修改版本号的呢?

手动去 package.json 中手动修改 版本号吗??

也行,不过就是有点傻批。

我们有自带的命令和工具去帮我们更好的完成这一件事

今天就总结两个东西

1、npm 自带命令完成版本号更新

2、standard-version 包快速更新版本号

NPM自带命令更新版本号

npm 有自带命令让你更新版本号

发布的版本类型有很多,不止主版本,次版本,修订版本 三种,还有预备主版本,预备次版本,预备修订版,预发布版

下面我们就大一统来看下命令(蓝色部分是命令修改的地方)

什么是预备版本呢?

首先,上面表格右边出现的 -0 的数字,就是 预发布号

预存一个版本,你可以 pulish 上去,但是不会发布到生产环境

觉得跟 git 的 commit 一样,推送到自己 npm 账户上去把这部分更新先保存起来

预备发布版本 和 其他预备版本有什么不同?

修改其他预备版本时,修改的地方有两个

1、递增专属的版本号位置,比如升级预备主版本,就只递增第一个数字

2、在 版本后面添加 "-0"

而 预备发布版本,则是用来递增 预发布号的,就是 最末尾横杠后的数字

比如 当前你的版本是 v1.0.0,当你升级预备主版本时

而当你继续更新预备主版本时,预发布号又会被重置

所有预备发布版本其实跟 其他 预备版本是一样的,只是 预备发布版本用来给 其他 预备版本 继续细分版本而已

当我们正式升级版本时,会把预发布号给去掉

是不是觉得上面的命令还是挺麻烦的,不怕,当然已经有人弄了一个包

standard-version 更新版本号

这个包也是帮助我们更新版本号的,但是你要说他比 npm version 方便些,也不太见得

只不过,这个包帮我做更多的事,显得项目更加正规一些更加高大上一些

github 地址:https://github.com/conventional-changelog/standard-version

这个包帮我们做了什么事情呢

1、增加了 changelog 文件

2、帮你自动修改 package.json 和 changelog 并提交 ,然后给 提交的 commit 打上标签

下面先来回答两个个问题

1、什么是 changelog 文件

根据字面意思来看,就是改动日志,没错,就是你项目的改动日志,用于记录你的什么时候进行版本更新,以及更新了什么内容

目前当然是要你手动去记录你改动什么啊,不过后面会有一个包帮你自动做这个事情

2、什么是自动修改 package.json 和 changelog,并提交打标签

不用想,修改 package.json 肯定是帮你更新版本号 version那么 changelog 会修改什么呢?

会增加此次更新的版本号以及时间,比如你此次升级成 v3.4.6,那么就会在 changelog 中增加这一行信息

相应的,你要在 这一行下面加上你更新的内容

然后!

帮你自动修改完这两个文件之后,就会自动提交 git commit ,并会给这条记录打上版本的标签

没看错!只会提交这两个文件!

但是提交我懂,打标签反正我没懂得,虽然很常用

打标签就是,给某条提交记录做个简单的标记,他的作用 和 commit 的 commit-id 是差不多的,只不过 commit 的那个id 太长,不好记,或者说,打标签就是找个简短好记的替代 commit-id (你看下面这串这么长,贼讨厌)

所以为了方便,就给这条记录打上一个简单的标签,方便我们回退到这个版本

简单提一下怎么打标签

相关知识要熟悉一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git tag -a v3.1 f1bb97a

v3.1 就是你要打的标签,后面那串就是 commit-id,从 git 提交记录去找你要打标签的那条提交记录

开始使用standard-version!

上面两个问题我们已经了解喽,下面就来说说怎么使用这个包!!

第一步肯定是要安装的!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i standard-version -D

下面我们就来说一下使用命令!

首先,我们去 package.json 中添加一个脚本命令

当然了,我们使用这个包升级版本号也像前面一样,可以升级各种版本号

主版本,次版本,补丁版本等等 都是可以的!

ok,下面开始我们的版本升级 show

更新补丁版本(版本号最后那一位)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run release

看下面的运行情况,可以看到做了三件事,我们上面有提到的

更新次版本(版本号中间那位)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run release -- --release-as minor

记住,上面的那两杠是必须的

而更新主版本也是一样的,把 minor 改成 major 就行了

直接指定版本号也是可以的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run release -- --release-as 5.1.0

下面说下更新预备版(版本号后加一杠)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run release -- --prerelease

更新内部测试版(不对外发布,有很多bug,只有测试人员用那种)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run release -- --prerelease alpha

发布并推送

我们现在已经更新版本好了,下一步就是发布 npm 并且 提交代码到 github 上了一行命令搞定

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push --follow-tags origin master && npm publish

但是这样太长了

通常,我添加到 package.json 的脚本命令中

然后发布时,一条命令就行了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run push

有没有对其中的指令有些疑惑,没错!我也疑惑,本着研究到底的精神,我 go 了

疑惑什么呢?就是

--follow-tags 是什么鬼?

简要来说,这句话是把你本地打的标签,推送到 github 上

因为如果直接 git push,是不会把本地标签推送上去的

而 推送本地标签又可以分为两种

1、推送本地全部标签

2、推送本地带有注释的标签

先看下github 上我们推上去的标签是怎么样的(以下是在 码云看的)

通常 github 上的标签就是版本号,所以然后我们下载的时候,完全可以选择版本进行下载

下面说推送标签的命令把

推送本地全部标签,是下面的命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push --tags

推送本地带有注释的标签,没错,就要加上 那个疑惑的东西了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push --follow-tags

什么是带有注释的标签啊?

通常,标签分为两种

1、轻量级标签

2、带注释的标签

轻量级标签就是轻量,不会附加其他信息,就带一个 标签名,通常这么去创建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git tag v2.0.0

带注释的标签,显然就会附加上更多的信息,其中就有注释,通常这么创建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git tag -a v1.1.0 -m 'this is my first version'

standard-version 给我们创建的版本标签就是 带注释的标签

所以我们就需要把这些标签推送上去,来分离出版本节点,而一般我们自己本地创建的标签都是轻量级的,为了方便自己用的,所以没必要推送到远程仓库,那么就在这里加了个筛选

如果 git push --tags 的话,就会把轻量级以及注释标签都会推送上去了

总结

其实一般小公司的项目可能都用不到版本号的管理(笑哭)我们以前更新项目根本不知道这个东西,但是现在在大公司,版本号是严格控制的

所以肯定是要会的,而且要保证忘了也能捡起来

希望大家也能掌握,就算现在不掌握,也最好保存收藏一下,因为迟早的事哈哈哈

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 神仙朱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SSL证书申请与使用
描述:服务器CentOS7.x,Nignx,Let’s Encrypt做免费的HTTPS证书。 Let’s Encrypt官网: https://letsencrypt.org/ 操作流程:
全栈工程师修炼指南
2022/09/29
1.1K0
如何在Ubuntu 16.04上使用Let加密SSL证书配置GoCD
GoCD是一个功能强大的持续集成和交付平台,旨在自动化测试和发布流程。GoCD具有许多高级功能,例如比较构建,可视化复杂工作流以及自动构建版本跟踪,是一种灵活的工具,可以帮助团队将经过良好测试的软件提供给生产环境。
编程男孩
2018/09/21
1.2K0
如何使用Certbot独立模式检索我们在Ubuntu 18.04上加密SSL证书
Let's Encrypt是一种通过自动API提供免费SSL证书的服务。最受欢迎的Let's Encrypt客户端是EFF的Certbot。
丰一川
2018/10/25
1.6K0
Nginx同一个IP上多个域名配置安装SSL证书
在同一台服务器上配置多个带有SSL证书的HTTPS网站时,每个网站确实需要使用不同的端口号,以避免冲突。这是因为SSL/TLS协议通常是在特定的端口上运行的,默认情况下是443端口。
Tinywan
2024/03/20
2.6K0
Nginx同一个IP上多个域名配置安装SSL证书
Linux服务器上Tomcat配置SSL证书并自动续期
2.lets encrypt官网地址:https://letsencrypt.org
JaneYork
2023/10/11
6330
Linux服务器上Tomcat配置SSL证书并自动续期
linux centos debain nginx自动ssl证书配置 软件 snapd
# sudo apt-get remove certbot、sudo dnf remove certbot或sudo yum remove certbot。
eisc
2022/03/06
1.2K0
宝塔配置SSL证书
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
收心
2022/12/10
1.5K0
如何在CVM上安装Matrix Synapse
Matrix是分散通信的开放标准。它使用标准化API实时同步的在线消息传递到其他服务器。
苏子晨
2018/07/19
3.9K1
使用 Certbot 安装 Letsencrypt 证书
1、拥有一个域名,例如 mydomain.com 2、在域名服务器创建一条A记录,指向云主机的公网IP地址。例如 demo.mydomain.com 指向 192.168.0.1 的IP地址 3、要等到新创建的域名解析能在公网上被解析到
SkyRiN
2018/11/20
4.6K0
CentOS7-Nginx配置Let's-Encrypt-SSL证书
为http站点添加https支持,需要从证书发行机构获取SSL/TLS 证书。常见的免费证书有两种:
职场亮哥
2020/10/10
2.2K0
群晖重启SSL被自动重置解决方案
先进入到群晖上传证书的存放点,然后ls查看你的证书被放在哪个随机名称文件夹里了。群晖webui上传的SSL证书都会被放到随机名称文件夹里,为了方便起见我只传了一张SSL,找起来就方便。
jcjyxjs
2021/09/03
2K0
如何使用CentOS 7上的CloudFlare验证来检索让我们加密SSL通配符证书
Let's Encrypt是一个证书颁发机构(CA),它为传输层安全性(TLS)加密供免费证书。它提供了一个名为Certbot的软件客户端,它简化了证书创建,验证,签名,安装和续订的过程。
圣人惠好可爱
2018/11/05
3.6K0
使用Let's Encrypt的SSL证书配置HTTPS手记
前段时间,看见很多大会都在分享全站HTTPS的经验。HTTPS固然好,前提是SSL证书,并且签发证书的机构要靠谱。沃通的CA证书就相继被Mozilla和Google封杀了。曾经对于普通用户,权威,安全,并且免费的证书无疑就像天上的星星,可望而不可及。现在,这些星星变成了馅饼掉了下来。没错,我们可以申请安全免费的ssl证书--- Let's Encrypt。 Let’s Encrypt是电子前哨基金会(EFF)发布的免费 SSL 证书服务,Google,Mozilla和Microsoft都极力支持。很早之前就
李海彬
2018/03/19
2.5K0
使用Let's Encrypt的SSL证书配置HTTPS手记
CentOS下申请let's encrypt SSL证书
title: CentOS下申请let’s encrypt SSL证书 date: 2020-04-01 23:31:42 tags: [Hexo,建站] categories: [建站]
JaneYork
2023/10/11
7290
CentOS下申请let's encrypt SSL证书
如何使用CentOS 7上的Let's Encrypt来保护HAProxy
我们的加密是一个新的证书颁发机构(CA),它提供了一种获取和安装免费TLS / SSL证书的简便方法,从而在Web服务器上启用加密的HTTPS。它通过提供软件客户端Certbot来简化流程,该客户端尝试自动执行大多数所需步骤。目前,获取和安装证书的整个过程仅在Apache Web服务器上完全自动化。但是,无论您选择哪种Web服务器软件,都可以使用Certbot轻松获取免费的SSL证书,该证书可以手动安装。
尘埃
2018/10/15
2.2K0
在Ubuntu 18.04上使用Let’s Encrypt保护Nginx
Let's Encrypt是由互联网安全研究组(ISRG)开发的免费开放认证机构。 Let's Encrypt颁发的证书现在几乎所有浏览器都信任。
星哥玩云
2022/07/13
1.4K0
在Ubuntu 18.04上使用Let’s Encrypt保护Nginx
在CentOS Linux 7.5上使用Let’s Encrypt以保护Nginx
Let's Encrypt是由互联网安全研究组(ISRG)开发的免费开放认证机构。 Let's Encrypt颁发的证书现在几乎所有浏览器都信任。
星哥玩云
2022/07/13
1.8K0
在CentOS Linux 7.5上使用Let’s Encrypt以保护Nginx
免费https证书安装(Nginx)
对于站点来说,使用https访问能增强数据传输的安全性,避免一些安全事故,同时拥有了https认证,在主流浏览器中都被被标记为可信任的安全的网站,也能加强搜索引擎的对https站点的收录。
肓己
2021/08/12
1.5K0
如何使用acme.sh自动获取、更新Let’s Encrypt的SSL证书?
acme.sh实现了acme协议,可以从let's encrypt生成免费的ssl证书。本文主要记录使用dnspod api 自动申请ssl证书
房东的狗丶
2023/02/17
5.4K0
你的网站HTTPS了吗 | Let’s Encrypt
前言 下午,图书馆闭馆了了、得找一个安全的地方上网(o)/~,一直听说着Let’s Encrypt。前几天玩了一下,但是本地运行Let’s Encrypt不能生成证书,Maybe School DNS question :-D,那就在腾讯云服务器玩玩。 ---- Let’s Encrypt Let's Encrypt是由EFF、Mozilla、Cisco、Akamai、IdenTrust与密西根大学研究人员共同创立的免费的凭证中心,目的在于推动全球所有的网站都使用HTTPS加密传输,创建一个更安全、更具
AlicFeng
2018/06/08
2.4K0
推荐阅读
相关推荐
SSL证书申请与使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验