Nodejs成功离不开 npm 优秀的依赖管理系统。在介绍整个依赖系统之前,必须要了解 npm如何管理依赖包的版本,本文将介绍 npm包 的版本发布规范以、何管理各种依赖包的版本以及一些关于包版本的最佳实践。

# 查看npm包版本
你可以执行 npm view package version 查看某个 package 的最新版本。
执行 npm view conard versions 查看某个 package 在npm服务器上所有发布过的版本。

执行 npm ls 可查看当前仓库依赖树上所有包的版本信息。

# SemVer规范
npm包 中的模块版本都需要遵循 SemVer规范——由 Github 起草的一个具有指导意义的,统一的版本号表示规则。实际上就是 Semantic Version(语义化版本)的缩写。
SemVer规范官网: https://semver.org/
# 标准版本
SemVer规范的标准版本号采用 X.Y.Z 的格式,其中 X、Y 和 Z 为非负的整数,且禁止在数字前方补零。X 是主版本号、Y 是次版本号、而 Z 为修订号。每个元素必须以数值来递增。
- 主版本号(
major):当你做了不兼容的API 修改 - 次版本号(
minor):当你做了向下兼容的功能性新增 - 修订号(
patch):当你做了向下兼容的问题修正。
例如:1.9.1 -> 1.10.0 -> 1.11.0
# 先行版本
当某个版本改动比较大、并非稳定而且可能无法满足预期的兼容性需求时,你可能要先发布一个先行版本。
先行版本号可以加到“主版本号.次版本号.修订号”的后面,先加上一个连接号再加上一连串以句点分隔的标识符和版本编译信息。
- 内部版本(
alpha): - 公测版本(
beta): - 正式版本的候选版本
rc: 即Release candiate
# React的版本
下面我们来看看 React 的历史版本:

可见是严格按照 SemVer 规范来发版的:
- 版本号严格按照
主版本号.次版本号.修订号格式命名 - 版本是严格递增的,:
16.8.0 -> 16.8.1 -> 16.8.2 - 发布重大版本或版本改动较大时,先发布
alpha、beta、rc等先行版本
# 发布版本
在修改 npm 包某些功能后通常需要发布一个新的版本,我们通常的做法是直接去修改 package.json 到指定版本。如果操作失误,很容易造成版本号混乱,我们可以借助符合 Semver 规范的命令来完成这一操作:
npm version patch: 升级修订版本号npm version minor: 升级次版本号npm version major: 升级主版本号
# 版本工具使用
在开发中肯定少不了对一些版本号的操作,如果这些版本号符合 SemVer规范 ,我们可以借助用于操作版本的npm包semver来帮助我们进行比较版本大小、提取版本信息等操作。
Npm 也使用了该工具来处理版本相关的工作。
npm install semver
- 比较版本号大小
