npm 发包及回滚机制

205 阅读2分钟

npm 发包操作

基础操作

npm 发包操作比较简单,只需登录 npm 后,进行对应的版本发布即可

npm login

npm publish

这样就会发布一个 package.json 里面版本号的版本的包。

如果发布的包的版本已经存在了,那么会直接报错

截屏2025-08-12 23.37.50.png

自增版本号

可以使用 npm version 命令修改版本号

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]


alias: verison

以 1.0.0 为例子,各个命令参数执行结果如下

命令(基于 1.0.0结果版本(默认)若加 --preid=alpha 的结果说明 / 细节 & Git 行为
<newversion>(如 npm version 1.2.31.2.3直接把 package.json 设为指定版本;默认会 commit 并创建 tag v1.2.3
major2.0.0npm version major --preid=alpha2.0.0-alpha.0主版本递增,次/补丁归零;会 commit 并创建 tag v2.0.0(或带 preid 的 tag)。
minor1.1.01.1.0-alpha.0次版本递增,patch 归零;会 commit 并创建 tag v1.1.0
patch1.0.11.0.1-alpha.0补丁递增;会 commit 并创建 tag v1.0.1
premajor2.0.0-02.0.0-alpha.0(若 --preid=alpha先把 MAJOR+1,变成预发布(默认 preid 为空所以变 -0);会 commit 并创建 tag v2.0.0-0(或带 preid 的 tag)。
preminor1.1.0-01.1.0-alpha.0次版本+1,变预发布;commit + tag。
prepatch1.0.1-01.0.1-alpha.0补丁+1,变预发布;commit + tag。
prerelease1.0.1-01.0.1-alpha.0(若 --preid=alpha如果当前没有 prerelease,则会在 patch 基础上添加 -0(或 -alpha.0);若已是 1.0.1-0 则变 1.0.1-1(递增 prerelease 数字)。会 commit + tag。
from-git取决于最近的 Git tag(必须存在),例如最近 tag 为 v1.2.31.2.3同上(若 tag 是 v1.2.3-alpha.0 则读取为该值)package.json 设为最近匹配的 git tag 版本(无 tag 则报错);默认也会做 commit 和创建 tag(行为受 --no-git-tag-version 等影响)。

tag 操作

npm install 时,安装依赖的默认 tag 是 latest。publish 时,也是 latest 为默认 tag,可以使用 --tag 参数指定,给当前发布版本打上指定的 tag。

npm publish --tag alpha

常见 tag 操作

操作命令说明示例
查看所有 tagnpm dist-tag ls <package>列出某个包当前所有 tag 及对应版本npm dist-tag ls react
添加 tagnpm dist-tag add <package>@<version> <tag>给指定版本加上一个 tagnpm dist-tag add my-lib@1.2.3 beta
更新 tag(同添加)npm dist-tag add <package>@<version> <tag>如果 tag 已存在,会指向新的版本npm dist-tag add my-lib@2.0.0 latest
删除 tagnpm dist-tag rm <package> <tag>删除某个 tag(不会删版本)npm dist-tag rm my-lib beta

npm 回滚操作

方式一 发布新版本

发布新版本覆盖,需要注意 npm 的 安装依赖版本规则。

方式二 修改 latest tag

先叠个甲,这种方式需要将原来的依赖卸载掉再安装,与方式一直接更新依赖会有点区别。

假设目前安装的依赖为这个版本 1.1.1 image.png 同时这个发布了如下版本 截屏2025-08-12 23.53.36.png 通过dist-tag 发现有两个 tag,latest tag 指向 1.1.1

image.png 下面通过 dist-tag add 将 latest 指向 1.1.0

image.png

再在项目中执行卸载 & 安装操作就会安装回滚的最新版本了

image.png