导航
执行 npm ls 可查看当前仓库依赖树上所有包的版本信息。
npm 包中的模块版本都需要遵循 SemVer 规范——由 Github 起草的一个具有指导意义的,统一的版本号表示规则。实际上就是 Semantic Version(语义化版本)的缩写。
SemVer规范官网:https://semver.org/
标准版本 SemVer 规范的标准版本号采用 X.Y.Z 的格式,其中 X、Y 和 Z 为非负的整数,且禁止在数字前方补零。X 是主版本号、Y 是次版本号、而 Z 为修订号。每个元素必须以数值来递增。
先行版本 当某个版本改动比较大、并非稳定而且可能无法满足预期的兼容性需求时,你可能要先发布一个先行版本。
先行版本号可以加到“主版本号.次版本号.修订号”的后面,先加上一个连接号再加上一连串以句点分隔的标识符和版本编译信息。
查看依赖的历史版本命令:
# 比如查看react的历史版本
npm view react versions
发布版本
在修改npm包某些功能后通常需要发布一个新的版本,我们通常的做法是直接去修改package.json到指定版本。如果操作失误,很容易造成版本号混乱,我们可以借助符合Semver规范的命令来完成这一操作:
npm version patch : 升级修订版本号npm version minor : 升级次版本号npm version major : 升级主版本号我们经常看到,在 package.json 中各种依赖的不同写法:
"dependencies": {
"signale": "1.4.0",
"figlet": "*",
"react": "16.x",
"table": "~5.4.6",
"yargs": "^14.0.0"
}
前面三个很容易理解:
"signale": "1.4.0": 固定版本号"figlet": "*": 任意版本(>=0.0.0)"react": "16.x": 匹配主要版本(>=16.0.0 <17.0.0)"react": "16.3.x": 匹配主要版本和次要版本(>=16.3.0 <16.4.0)再来看看后面两个,版本号中引用了 ~ 和 ^ 符号:
~: 当安装依赖时获取到有新版本时,安装到 x.y.z 中 z 的最新的版本。即保持主版本号、次版本号不变的情况下,保持修订号的最新版本。^: 当安装依赖时获取到有新版本时,安装到 x.y.z 中 y 和 z 都为最新版本。即保持主版本号不变的情况下,保持次版本号、修订版本号为最新版本。在 package.json 文件中最常见的应该是 "yargs": "^14.0.0" 这种格式的 依赖, 因为我们在使用 npm install package 安装包时,npm 默认安装当前最新版本,然后在所安装的版本号前加 ^号。
注意,当主版本号为 0 的情况,会被认为是一个不稳定版本,情况与上面不同:
0: ^0.0.z、~0.0.z 都被当作固定版本,安装依赖时均不会发生变化。0: ^0.y.z 表现和 ~0.y.z 相同,只保持修订号为最新版本。使用 npm outdated 可以帮助我们列出有哪些还没有升级到最新版本的依赖:
执行 npm update 会升级所有的红色依赖。
版本发布
npm包时,把它的版本标为1.0.0。主版本号.次版本号.修订号 格式命名alpha、beta、rc等先行版本依赖范围选择
npm包,此时建议把版本前缀改为~,如果锁定的话每次子依赖更新都要对主工程的依赖进行升级,非常繁琐,如果对子依赖完全信任,直接开启^每次升级到最新版本。docker线上,本地还在进行子依赖开发和升级,在docker版本发布前要锁定所有依赖版本,确保本地子依赖发布后线上不会出问题。保持依赖一致
npm的版本在5.6以上,确保默认开启 package-lock.json 文件。npm inatall 后,将 package-lock.json 提交到远程仓库。不要直接提交 node_modules到远程仓库。npm update 升级依赖,并提交 lock 文件确保其他成员同步更新依赖,不要手动更改 lock 文件。依赖变更
package.json文件的依赖版本,执行 npm installnpm install package@version(改动package.json不会对依赖进行降级)lock文件