npm 发包操作
基础操作
npm 发包操作比较简单,只需登录 npm 后,进行对应的版本发布即可
npm login
npm publish
这样就会发布一个 package.json 里面版本号的版本的包。
如果发布的包的版本已经存在了,那么会直接报错
自增版本号
可以使用 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.3) | 1.2.3 | — | 直接把 package.json 设为指定版本;默认会 commit 并创建 tag v1.2.3。 |
major | 2.0.0 | npm version major --preid=alpha → 2.0.0-alpha.0 | 主版本递增,次/补丁归零;会 commit 并创建 tag v2.0.0(或带 preid 的 tag)。 |
minor | 1.1.0 | 1.1.0-alpha.0 | 次版本递增,patch 归零;会 commit 并创建 tag v1.1.0。 |
patch | 1.0.1 | 1.0.1-alpha.0 | 补丁递增;会 commit 并创建 tag v1.0.1。 |
premajor | 2.0.0-0 | 2.0.0-alpha.0(若 --preid=alpha) | 先把 MAJOR+1,变成预发布(默认 preid 为空所以变 -0);会 commit 并创建 tag v2.0.0-0(或带 preid 的 tag)。 |
preminor | 1.1.0-0 | 1.1.0-alpha.0 | 次版本+1,变预发布;commit + tag。 |
prepatch | 1.0.1-0 | 1.0.1-alpha.0 | 补丁+1,变预发布;commit + tag。 |
prerelease | 1.0.1-0 | 1.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.3 → 1.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 操作
| 操作 | 命令 | 说明 | 示例 |
|---|---|---|---|
| 查看所有 tag | npm dist-tag ls <package> | 列出某个包当前所有 tag 及对应版本 | npm dist-tag ls react |
| 添加 tag | npm dist-tag add <package>@<version> <tag> | 给指定版本加上一个 tag | npm 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 |
| 删除 tag | npm dist-tag rm <package> <tag> | 删除某个 tag(不会删版本) | npm dist-tag rm my-lib beta |
npm 回滚操作
方式一 发布新版本
发布新版本覆盖,需要注意 npm 的 安装依赖版本规则。
方式二 修改 latest tag
先叠个甲,这种方式需要将原来的依赖卸载掉再安装,与方式一直接更新依赖会有点区别。
假设目前安装的依赖为这个版本 1.1.1
同时这个发布了如下版本
通过dist-tag 发现有两个 tag,latest tag 指向 1.1.1
下面通过 dist-tag add 将 latest 指向 1.1.0
再在项目中执行卸载 & 安装操作就会安装回滚的最新版本了