npm 更新依赖包三种用法
一、基本命令使用
- 查看远程安装包 packageName 的版本信息
npm view|info packageName versions复制代码
- 检查过时的安装包
npm outdated [packageName]复制代码
版本信息说明
Package 显示包名。若使用了(--long/-l)则还是显示这个包属于dependencies还是devDependency
Current 即当前被安装依赖包的版本
Wanted 是满足 package.json 中的依赖包范围的最大版本,若没有多余版本号,则显示当前版本
Latest 是该包在仓库中标记为 latest 的版本【默认情况下是最新的,这取决于开发人员的包管理制度】
Location 是该依赖包在所居于的依赖树中所在的位置
package 字体颜色含义
红色 意味着匹配到了一个比 package.json 中定义的版本需求还要新的已安装版本【 Current > Wanted 】
黄色 表示该包自身远程仓库中有比 SemVer 需求更新的版本【 Latest > Current 】
- 查看全局安装的包
npm list -g --depth 0复制代码
依赖版本认知
项目对应依赖包一般保存在 package.json 文件中,相对应版本号的形式为mojor.minor.patch 。
major 表示非兼容的重大 API 改变(主要的)
minor 表示向后兼容的功能性改变(次要的)
patch 表示向后兼容的 bug 修正(修补的)
依赖包对应版本号前缀符号含义
* 匹配最新的 major 版本依赖包
^ 匹配最新的 minor 版本依赖包,eg: 1.1.0 可以更新匹配所有 1.x.x 的包,不会更新匹配 2.x.x
~ 匹配最新的 patch 版本依赖包,eg: 1.1.0 可以更新匹配所有 1.0.x 的包,不会更新匹配 1.2.x
没有前缀表示固定版本号, 版本不会更新匹配任何其他版本。【需要手动修改 package.json` 包版本】
二、npm update
- 更新指定依赖安装包【不一定包括 major 位的更新,有时需要在 package.json 手动更改依赖包相应版本号在更新】
npm update packageName (-D | -S)复制代码
npm i 与npm update之间的区别
npm i 只会重新安装对应安装包的版本,不会自动升级
npm update 会将对应的安装包升级到最新的 latest 版本【在符合 SemVer 规格的前提下 ( 上文依赖版本人认知 ) 】
- npm install 会安装或升级 devDependencies ,除非添加了 --production 标记
- npm update 会忽略 devDependencies ,除非添加了 --dev 标记
三、npm-check-updates
- 全局安装依赖 npm-check-update
npm install npm-check-update -g复制代码
- 检查可更新模块
ncu 或 npm-check-update复制代码
- 更新可更新模块【并不建议一次性更新所有可更新依赖包】(更新包括 major 位的更新)
ncu -u [packageName]复制代码
四、npm-check
- 全局安装依赖 npm-check
npm install npm-check -g复制代码
- 查看可更新包信息
npm-check复制代码
- 选择并更新相应的依赖包【空格选择、enter更新】
npm-check -u复制代码
五、三种方法的区别
区别
npm update
1、 npm update [packageName] 会同步更新 package-lock.json 文件中对应的包的版本,不需要重新安装 npm 包
npm-check-updates 和 npm-check
二者基本大致相同,只是在更新过程中的一些交互表现形式存在一定的差异
更新 package.json 文件中可更新的安装包,但不会更新对应的 package-lock.json 文件中对应的包的版本
需要使用下面命令重新安装依赖:
rm -rf package-lock.json && npm i复制代码