package.json和package-lock.json的关系

今天学习到了一个小知识,就是终于明白了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.json和package-lock.json的关系
package-lock.json文件
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.json中的版本没有改变,但是其实我们使用的版本是最新的

第一种情况:没有package-lock.json文件的时候:

package.json和package-lock.json的关系

这个时候新创建的package-lock.json中的qiankun版本也改变了

接下来我们再使用npm i qiankun 安装试试

package.json和package-lock.json的关系
可以看到这里的两个版本都改变了

当我们手动修改package.json中的qiankun版本为2.3.6的时候再使用npm i 下载试试
package.json和package-lock.json的关系
可以看到手动修改是无效的,下载的包版本还是之前最新的

上一篇:使用qiankun整合项目记录


下一篇:微前端与微前端实践