前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【工具】管理NPM 包版本号

【工具】管理NPM 包版本号

作者头像
神仙朱
发布2020-06-28 16:29:18
2.3K0
发布2020-06-28 16:29:18
举报

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

笔记列表在公众号右下角

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

手动去 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
复制
git tag -a v3.1 f1bb97a

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

开始使用standard-version!

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

第一步肯定是要安装的!

代码语言:javascript
复制
npm i standard-version -D

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

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

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

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

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

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

代码语言:javascript
复制
npm run release

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

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

代码语言:javascript
复制
npm run release -- --release-as minor

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

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

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

代码语言:javascript
复制
npm run release -- --release-as 5.1.0

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

代码语言:javascript
复制
npm run release -- --prerelease

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

代码语言:javascript
复制
npm run release -- --prerelease alpha

发布并推送

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

代码语言:javascript
复制
git push --follow-tags origin master && npm publish

但是这样太长了

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

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

代码语言:javascript
复制
npm run push

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

疑惑什么呢?就是

--follow-tags 是什么鬼?

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

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

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

1、推送本地全部标签

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

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

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

下面说推送标签的命令把

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

代码语言:javascript
复制
git push --tags

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

代码语言:javascript
复制
git push --follow-tags

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

通常,标签分为两种

1、轻量级标签

2、带注释的标签

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

代码语言:javascript
复制
git tag v2.0.0

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

代码语言:javascript
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档