版本号详解
示例:1.1.1(主要版本号.次要版本号.修补版本号)
major 表示非兼容的重大 API 改变(主要的)
minor 表示向后兼容的功能性改变(次要的)
patch 表示向后兼容的 bug 修正(修补的)
版本号前缀:
-
*匹配最新主版本 -
^匹配最新的次版本 -
~匹配最新的修补版本
package.json 与package.lock文件
package.json记录项目中所需要的模块,这些模块所依赖的其他子模块的信息不会记录。package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块
当你执行
npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,如果node_modules中没有则进行下载,有但版本号不一致则会更新模块。因为
package-lock.json文件锁定了版本号,所以想要升级模块版本必须用npm install packagename(自动更新小版本号)或者npm install packagename@x.x.x(指定版本号)来进行安装,才会更新package.json文件,package.json文件更新,package-lock.json文件中的版本号也会随着更新。
附:当package.json与package-lock.json都不存在,执行"npm install"时,node会重新生成package-lock.json文件,将node_modules中的模块信息全部记入package-lock.json文件,但不会生成package.json文件,此时,你可以通过"npm init --yes"来生成package.json文件
lock文件存在
-
npm install会按照lock对应包版本进行安装,不会自动升级- 手动更改
package中的包版本,lock会按照package更新到最新版本
- 手动更改
-
npm update会按照package对应包版本前缀升级规范安装到最新到版package中对应包版本号改变lock中对应包版本号改变【最新版与lock中相同则不变】
lock文件不存在
-
npm install会按照package.json升级到最新到版本package.json安装最新版lock中按package规范同步升级到最新版
-
npm update和npm install相似- 但会忽略
devDependencies开发依赖包将不会更新 - 添加了
-D才会在安装更新dependencies下的前提下更新安装devDependencies下对应的依赖包
- 但会忽略
npm-check-updates
- 全局安装依赖 npm-check-updates
npm install npm-check-updates -g
- 检查可更新模块
ncu 或 npm-check-updates
- 更新可更新模块【并不建议一次性更新所有可更新依赖包】(更新包括 major 位的更新)
ncu -u [packageName]
五、npm update和npm-check-updates的区别
npm update [packageName] 会同步更新 package-lock.json 的版本
npm-check-updates会更新 package.json 中的安装包,但不会更新 package-lock.json 中的版本