1. ^ 意思是要更新【次版本】,当市场有更新的版本时,例如:package.json 中是"^2.1.0",库可能会更新到2.2.0的最新版本,但不会更新到3.0.0版本。
2. ~ 意思是要更新【补丁版本】,当市场有更新的版本时,例如:package.json 中是"~2.1.0",库可能会更新到2.1.1的最新版本,但不会更新到2.2.0版本。
3. 版本号前面啥也没有,表示写死了版本号,无论何时何地安装的依赖版本只会是这个。
4. yarn.lock 和 package-lock.json 下载新依赖上的区别
当 package-lock.json 存在时,即使市场上有比 package-lock.json 中锁定版本更新,且 package-lock.json 中存在 ^ ~ 允许更新, 安装的版本也只会是 package-lock.json 中锁定的版本,不会自动下载更新的版本。当然当 package.json 中版本被手动更新,会触发的 package-lock.json 连带变更。
而 yarn 的 yarn.lock,当市场有比 yarn.lock 中更新的版本,且 存在 ^ ~ 允许更新, 那么 yarn 会自动安装比 yarn.lock 更新的版本并且主动修改 yarn.lock。
总结:
-
①package.json 具有锁定依赖版本的决定权,包管理工具不具有。
-
②package.json ^ 意思是要更新【次版本】,~ 意思是要更新【补丁版本】。
-
③yarn 的 yarn.lock 和 npm 的 package-lock.json 对“锁定依赖版本”表现不同,package-lock.json 的“锁定效果”更可靠。