主流包管理工具npm、yarn、cnpm、pnpm之间的区别与联系——原理篇

}

解析,

  • ^字符,告诉npm,安装主版本等于4的任意一个版本即可

  • 现在运行npm进行安装,npm将安装lodash的主版本为4的最新版,可能[email protected](@是npm约定用来确定包名的指定版本的)

  • 理论上,次版本号的变化并不会影响向后兼容性。因此,安装最新版的依赖库应该是能正常工作的,而且能引入自4.17.4版本以后的重要错误和安全方面的修复。

  • 但是,即使不同的开发人员使用了相同的package.json文件,在他们自己的机器上也可能会安装同一个库的不同种版本,这样就会存在潜在的难以调试的错误和“在我的电脑上…”的情形。

大多数npm库都严重依赖于其他npm库,这会导致嵌套依赖关系,并增加无法匹配相应版本的几率。

虽然可以通过npm config set save-exact true命令关闭在版本号前面使用^的默认行为,但这个只会影响顶级依赖关系。由于每个依赖的库都有自己的package.json文件,而在它们自己的依赖关系前面可能会有^符号,所以无法通过package.json文件为嵌套依赖的内容提供保证。

为了解决这个问题,npm提供了shrinkwrap命令。此命令将生成一个npm-shrinkwrap.json文件,为所有库和所有嵌套依

你可能感兴趣的:(程序员,npm,前端,node.js)