package-lock.json的作用:
锁版本,确保项目在后续拉去中,安装依赖包时依赖包的版本始终是统一的
在npm install时会自动生成package-lock.json
package.json与package-lock.json相同时,npm安装包时以package-lock.json为准,当两者不同时,npm install时会以package.json为准,并同时更新package-lock.json(未经过本人验证)。
没必要锁版本时可以不用package-lock.json锁版本。
package-lock.json与package.json的不同:
package-lock.json记录的是依赖树,记录了依赖模块之间的完整依赖关系。package.json记录的是依赖项,不能锁定依赖的依赖。
额外补充:
npm vs yarn:
它们都是包管理工具,npm是node默认的包版本工具。
yarn的出现最早是为了解决npm的缺点:下载依赖慢、不能确保的版本统一等问题。
yarn与npm最重要的几点不同:
yarn是并行安装依赖模块,npm是按队列形式安装前面的包安装完成后面的包才能安装;
yarn对已经安装过的包会有缓存,npm每次安装都需要去网上下载。
升级后的npm与yarn一样,也具备了锁版本的功能,可以保证在不同环境下拉取到的项目,在安装依赖包时,版本是一致的。
参考资料:
升级间接依赖:https://juejin.im/post/5b6908ba6fb9a04f9c43e7b8
谈yarn: https://www.bittiger.io/blog/post/BQGg7FzRPHjh84iu9
yarn vs npm:https://juejin.im/post/5b6908ba6fb9a04f9c43e7b8
yarn vs npm外文:https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
package-lock.json冲突问题:https://www.jianshu.com/p/1d2e2f8c9ab2