今天学习到了一个小知识,就是终于明白了package.json和package-lock.json的关系
先说前面 ^和~的区别
^ 开头意思是向后更新,如果当前使用版本是2.x.x,则在之后使用npm i或者yarn下载的时候会下载次要版本最新的
例如:当前使用2.3.6,但是最新的时候2.4.2,则会下载2.4.2版本
~ 开头的意思是下载小版本最新的,当次要版本有新版本时不会下载
例如:当前使用2.3.6,但是最新的时候2.4.2,则会下载2.3.x的最新版本,不会下载2.4.2
package.json和package-lock.json的关系
下面以qiankun为例
初始化项目时候
package.json文件
package-lock.json文件
第一种情况:有package-lock.json文件的时候:
当我们初始化项目时候下载的是2.3.6版本的,然后当其他人启动项目下载依赖的时候发现有了qiankun的新版本2.4.2,在使用npm i 的时候,这两个文件没有变化,但是node_modules包中的qiankun就可以看出来变化
这里的包版本已经改变了,此时虽然package.json中的版本没有改变,但是其实我们使用的版本是最新的
第一种情况:没有package-lock.json文件的时候:
这个时候新创建的package-lock.json中的qiankun版本也改变了
接下来我们再使用npm i qiankun 安装试试
可以看到这里的两个版本都改变了
当我们手动修改package.json中的qiankun版本为2.3.6的时候再使用npm i 下载试试
可以看到手动修改是无效的,下载的包版本还是之前最新的