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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文搞定 Conventional Commits
规范化 git commit 对于提高 git log 可读性、可控的版本控制和 changelog 生成都有着重要的作用。然而阻碍我们脚步的不只是团队的推广,单单对于一系列工具的配置都让人头大。这其中主要就是 commitlint 和 commitizen 的配合使用以及自定义提交规范。本文总结了目前的最佳实践给大家,如果有帮助,赏个star足矣。
用户1250838
2021/07/30
1.4K0
Nuxt3 实战 (三):使用 release-it 自动管理版本号和生成 CHANGELOG
2、 根目录添加 .release-it.json 配置文件,具体配置请参考:conventional-changelog
白雾茫茫丶
2024/05/22
3150
Nuxt3 实战 (三):使用 release-it 自动管理版本号和生成 CHANGELOG
尤大是如何发布vuejs的,学完可以应用到项目
1.源码地址:https://github1s.com/vuejs/vue-next/blob/HEAD/scripts/release.js
童欧巴
2021/08/20
6010
尤大是如何发布vuejs的,学完可以应用到项目
学会发布自己的npm包
准备工作 在npm官网注册账号,要记住用户名/邮箱/密码 三个信息,后面需要用到 需要发布的项目应该有相应的git地址 包括但不限于github 最好在项目中使用gulp来把跑测试用例和打包的过程进行自动化,方便发布 操作流程 在修改完成后,首先本地提交,并执行单元测试(npm run unit) 如果测试通过,则可以打包出压缩后的成品代码(npm run build) 此时进入预发布流程,可以先通过npm whoami来确认登录信息,如果当前未登录,则需要npm login来输入用户名/密码/邮箱来登录
卡少
2018/05/16
8300
Angular 工具篇之规范化Git版本管理
目前很多的项目都已经使用 Git 作为版本控制工具,使用 Git 意味着我们每天都要与 Git Commit Message 打交道。Git Commit Message 看似简单,但实际却很重要。通过 Git Commit Message 我们可以快速地了解本次提交的信息,比如解决了哪个 Bug、优化了什么问题或新增了什么功能等。
阿宝哥
2019/11/05
1.5K0
release-it帮我做了哪些自动化的事情
这里生成了changelog但是没有地方进行记录,于是release-it/conventional-changelog闪亮登场
闻说社
2022/08/17
5270
git commit规范化实践
最近从svn转到git进行代码版本控制,今天了解了git commit规范化的一些知识后,写此文章记录下配置过程。
寻找石头鱼
2019/08/20
1.3K0
git commit规范化实践
如何构建基于Git的开发工作流规范?Git版本管理工具应该这样用
转载自:https://github.com/GDJiaMi/frontend-standards/blob/master/development.md
IT大咖说
2019/09/17
1.4K0
如何构建基于Git的开发工作流规范?Git版本管理工具应该这样用
在 monorepo 中怎么组织和优化研发流程?
本文是基于Vite+AntDesignVue打造业务组件库[2]专栏第 10 篇文章【在 monorepo 中怎么组织和优化研发流程?】,前面几篇都在说函数库开发的相关内容,所以本文接着围绕这块说,主要是把研发流程梳理清楚,方便后续更多内容的铺开。
程序员白彬
2023/03/02
1.2K0
在 monorepo 中怎么组织和优化研发流程?
读完 Vue 发布源码,小姐姐回答了 leader 的提问,并优化了项目发布流程~
这一期阅读的是 Vue3 源码中的 script/release.js 代码,也就是 Vue.js 的发布流程。在上一期源码阅读中从 .github/contributing.md[1] 了解到 Vue.js 采用的是 monorepo 的方式进行代码的管理。
若川
2021/09/07
1.2K0
小程序控制版本更新最佳实践
按照微信小程序官方文档的说明,小程序的更新机制主要分为未启动时更新和启动时更新两种模式。启动时更新会在小程序冷启动时异步检查是否有新版本,如果有新版本,会下载下来,等下次冷启动时候使用新版本代码进行启动;而未启动时更新会有定时检查器对最近7天内使用过的小程序进行定时检查是否有新版本,每6小时一次,如果有新版本就会预下载,下次冷启动时候可以直接使用最新的版本。
790531192
2022/02/08
2.1K1
小程序控制版本更新最佳实践
带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!
简单来说就是,将多个项目或包文件放到一个git仓库来管理。 目前比较广泛应用的是yarn+lerna的方式实现monorepo的管理。 一个简单的monorepo的目录结构类似这样:
winty
2023/08/23
7.6K0
带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!
Vue 3.2 发布了,那尤雨溪是怎么发布 Vue.js 的?
之前写的《学习源码整体架构系列》 包含jQuery、underscore、lodash、vuex、sentry、axios、redux、koa、vue-devtools、vuex4十篇源码文章。
若川
2021/09/07
1.5K0
【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM
本来需要配置.npmignore配置文件,但是网上不建议用这种方式,说是黑名单的方式,不在黑名单里的关键信息都发上去了。 而是建议使用package.json里配置白名单的方式。于是将package.json配置如下: 关键配置处加上了备注信息:
xing.org1^
2020/11/24
9680
【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM
软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范
第二种: 常规:完全的版本号定义,分三项:<主版本号>.<次版本号>.<修订版本号>,如 1.0.0
全栈程序员站长
2022/09/30
1.3K0
规范升级 NPM 包
在日常工作中,当组件跨项目使用时,我们往往会选择把组件抽成 npm 包。那么在 npm 开发以及发布的过程中有什么需要注意的事项吗?本文将从我自己的角度,来为大家介绍一下我认为的一些需要大家注意的点。
政采云前端团队
2022/12/01
8500
规范升级 NPM 包
前端基建处理之组件库优化方案
前端基建开发一直被认为是前端开发中的 “高阶技能”。而内部组件库的开发则算是基建中比较“容易”入手的一个方向。所以咱们今天就利用这篇文章,来看一看 组件库开发 的优化方案。
winty
2024/01/03
4510
前端基建处理之组件库优化方案
NPM 包开发与优化全面指南
package.json文件是 NPM 包的中央配置,定义了包的各个方面,从基本元数据到复杂的发布配置。
沉浸式趣谈
2024/10/28
1840
NPM 包开发与优化全面指南
NPM 包开发与优化全面指南
package.json文件是 NPM 包的中央配置,定义了包的各个方面,从基本元数据到复杂的发布配置。
沉浸式趣谈
2024/10/28
1640
NPM 包开发与优化全面指南
笔记:NPM版本号自增,自动化发布NPM包
Description 在一个包的目录下执行此命令,会提升版本号,并把这个新的版本号写进package.json文件,如果存在npm-shrinkwrap.json,也会写进去。
ihoey
2018/10/31
3.4K0
推荐阅读
相关推荐
一文搞定 Conventional Commits
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验