>[success] # package-lock.json 和 package.json ~~~ 1.两个都有管理版本依赖,他们之间对照规则又是什么? npm 2.x/3.x已成为过去式,在npm 5.x以上环境下(版本最好在5.6以上,因为在5.0 ~ 5.6 中间对package-lock.json的处理逻辑更新过几个版本,5.6以上才开始稳定) ~~~ >[danger] ##### 对比 ~~~ 1.在大版本相同的前提下,如果一个模块在package.json中的小版本要大于 package-lock.json中的小版本,则在执行npm install时,会将该模块更新到大版本下的最 新的版本,并将版本号更新至package-lock.json。如果小于,则被package-lock.json中的 版本锁定。 ~~~ ~~~ // package-lock.json 中原版本 "clipboard": { "version": "1.5.10", }, "vue": { "version": "2.6.10", } // package.json 中修改版本 "dependencies": { "clipboard": "^1.5.12", "vue": "^2.5.6" ... } // 执行完 npm install 后,package-lock.json 中 "clipboard": { "version": "1.7.1", // 更新到大版本下的最新版本 }, "vue": { "version": "2.6.10", // 版本没发生改变 } ~~~ ~~~ 1.如果一个模块在package.json和package-lock.json中的大版本不相同,则在执行npm install时,都将根据package.json中大版本下的最新版本进行更新,并将版本号更新至 package-lock.json。 ~~~ ~~~ // package-lock.json 中原版本 "clipboard": { "version": "2.0.4", } // package.json 中修改版本 "dependencies": { "clipboard": "^1.6.1", } // 执行完npm install后,package-lock.json 中 // "clipboard": { "version": "1.7.1", // 更新到大版本下的最新版本 } ~~~ ~~~ 1.如果一个模块在package.json中有记录,而在package-lock.json中无记录,执行npm install后,则会在package-lock.json生成该模块的详细记录。同理,一个模块在 package.json中无记录,而在package-lock.json中有记录,执行npm install后,则会在 package-lock.json删除该模块的详细记录。 ~~~ >[info] ## 参考文章 [前端工程化(5):你所需要的npm知识储备都在这了](https://juejin.cn/post/6844903870578032647#heading-1)