概念
1:package.json ①:npm启动开始得文件,可以用来启动打包项目等命令的配置 ②:管理项目的包文件,记录项目用到的包及版本号(dependencies生产依赖/devDependencies开发依赖) 2:package.lock.json package.json的dependencies生产依赖包管理文件
解决的问题
1:有了package.json管理包了,为何还要package.lock.json? 答案: ①:解决不同包引用同一个包,包下载冗余 ②:锁定包依赖关系,加快包查找下载速度
详细
1:解决不同包引用同一个包,包下载冗余 早期的包没有package.lock的时候,所有的包下载是树形结构,需要哪个包就直接下载,包体积很臃肿,很多相同版本的包,被多次下载,package.lock的出现,解决了这个问题: 下载包的时候,会从顶至下的递归寻找,是否已经存在,如果存在,直接引用,并且记录在package.lock中,不存在则在当前node_moudel目录下下载,也记录在package.lock中。这样重复的包就不会反复下载。 2:锁定包依赖关系,加快包查找下载速度 1中说过,包存在与否都记录在package.lock中,是一个树形结构,对应包依赖的结构,当我们提交package.lock文件,协同项目开发的时候,另一个人下载了package.lock文件,执行npm install会从package.lock中读取依赖关系,下载相对应的依赖包,而不再执行package.json中的包依赖下载,省去了递归查找是否有当前的依赖。