找回密码
 会员注册
查看: 17|回复: 0

规范升级NPM包

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64454
发表于 2024-10-10 20:38:43 | 显示全部楼层 |阅读模式
这是第 159篇不掺水的,想要了解更多,请戳下方卡片关注我们吧~规范升级 NPM 包前言在日常工作中,当组件跨项目使用时,我们往往会选择把组件抽成 npm 包。那么在 npm 开发以及发布的过程中有什么需要注意的事项吗?本文将从我自己的角度,来为大家介绍一下我认为的一些需要大家注意的点。版本号规则从日常的开发中我们可以看到,npm 包的版本号的格式都是 X.Y.Z。那么大家发布的 npm 包为什么都在遵循这个格式呢?这个格式其实是由 Gravatars 创办者兼 GitHub 共同创办者 [Tom Preston-Werner] http://tom.preston-werner.com/ 所建立。由 GitHub 起草的统一的版本号表示规则,称为 Semantic Versioning (语义化版本表示)。这些规范具体包含的内容大家可以参考[语义化版本 2.0.0] https://semver.org/lang/zh-CN/ 本文只针对我们开发中容易忽略的地方做一些详述。X 代表主版本号,也叫做大版本号升级大版本时意味着这个包可能做了颠覆性的改动,和低版本的包已经无法兼容。每当主版本号递增时,次版本号和修订号必须归零。Y 代表次版本号,也叫做小版本号当做了向下兼容的功能性新增时,升级小版本号。每当次版本号递增时,修订号必须归零。Z 代表修订号当做了向下兼容的问题修正(bugfix)时, 升级修订号。常见版本格式/引用方式版本引用方式版本号匹配版本解释直接使用版本号2.3.12.3.1只可以匹配 2.3.1 这个版本,如果是比较重要的项目,建议用这种方式固定版本。^:不能修改版本号最左侧非零数字^2.3.1>= 2.3.1 & = 0.3.1 & = 0.01 & = 2.3.1 & = 2.0.0 & = 2.3.0 & = 2.0.0 & |major|minor|patch|premajor|preminor|prepatch|prerelease|from-git]// newversion:指定更新的版本号// major:大版本并且不向下兼容时,使用 major// minor:有新功能且向下兼容时,使用 minor// patch:修复一些问题、优化等,使用 patch//以 A:2.3.1 为例npmversionpremajor//版本号会成为3.0.0-0,即3.0.0的预发版本npmversionpreminor//版本号为成为2.4.0-0,即2.4.0的预发版本npmversionprepatch//版本号成为2.3.2-0,即2.3.2的预发版本/***版本号会成为 2.3.2-0。*执行此命令时,如果没有预发布版本号,则增加Z,增加预发布号为0*如果有预发步号,增加预发步号*/npmversionprerelease根据上边的 API 可以看到我们能通过 npm version 2.3.2-beta.1 将 A 的版本升为 2.3.2-beta.1 的形式,除此之外,在 npm 6.4.0 之后,我们也可以使用 --preid 参数来添加前缀:npmversionprerelease--preid=beta此种方式需要注意,必须要 commit 本地的修改之后才可以执行。npm version 修改版本号,会默认执行 git add -> git commit -> git tag 操作,此时的版本号看起来有 beta,如下:但是这个 beta 是 git 仓库的 tag,并不是 npm 的 tag。如果不想默认给 git 添加 tag 的话,可以使用以下命令:npm--no-git-tag-versionversionxxx那么 npm version 执行时具体发生了什么呢?简要流程图如下执行完 npm version 2.3.2-beta.1 之后,如果直接使用 npm publish 来发布的话,发布出来的包的 tag 是 latest,但是我们其实是想发布一个测试包。如果其他人 npm i 下载时就会下载 version 为 2.3.2-beta.1 的包。只有使用 npm publish --tag XXX 才是给 npm 包上打了 tag 标签。执行以下命令就可以生成一个 tag 为 beta 的包:npmrunbuild//打包npmpublish--tagbeta//发布beta包如果不小心直接使用 npm publish 发错了也没有关系,可以使用以下命令来添加 tag:npmdist-tagadd @2.3.2-beta.1当需要删除多余的 tag 时:npmdist-tagrm 给大家提供一条指令完成 beta 版本的发布:"scripts":{"publish:beta":npmversionprerelease--preid=beta&npmrunbuild&npmpublish--tag=beta"},代码开发完毕,提交之后,只需要 npm run publish:beta 就可以发布一个测试版本啦~以上就是我本次分享的所有内容啦,如果有不足的地方,还望指正。参考文献语义化版本 2.0.0 (https://semver.org/lang/zh-CN/spec/v2.0.0.html)前端工程化(5):你所需要的 npm 知识储备都在这了(https://juejin.cn/post/6844903870578032647)npm version (https://docs.npmjs.com/cli/v6/commands/npm-version)看完两件事如果你觉得这篇内容对你挺有启发,我想邀请你帮我两件小事1.点个「在看」,让更多人也能看到这篇内容(点了「在看」,bug -1 )2.关注公众号「政采云前端团队」,持续为你推送精选好文招贤纳士政采云前端团队(ZooTeam),一个年轻富有激情和创造力的前端团队,隶属于政采云产品研发部,Base 在风景如画的杭州。团队现有 90 余个前端小伙伴,平均年龄 27 岁,近 3 成是全栈工程师,妥妥的青年风暴团。成员构成既有来自于阿里、网易的“老”兵,也有浙大、中科大、杭电等校的应届新人。团队在日常的业务对接之外,还在物料体系、工程平台、搭建平台、性能体验、云端应用、数据分析及可视化等方向进行技术探索和实战,推动并落地了一系列的内部技术产品,持续探索前端技术体系的新边界。如果你想改变一直被事折腾,希望开始能折腾事;如果你想改变一直被告诫需要多些想法,却无从破局;如果你想改变你有能力去做成那个结果,却不需要你;如果你想改变你想做成的事需要一个团队去支撑,但没你带人的位置;如果你想改变既定的节奏,将会是“5 年工作时间 3 年工作经验”;如果你想改变本来悟性不错,但总是有那一层窗户纸的模糊… 如果你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的自己。如果你希望参与到随着业务腾飞的过程,亲手推动一个有着深入的业务理解、完善的技术体系、技术创造价值、影响力外溢的前端团队的成长历程,我觉得我们该聊聊。任何时间,等着你写点什么,发给 ZooTeam@cai-inc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 02:12 , Processed in 0.480968 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表