如果npm已经具有npm-shrinkwrap.json用于锁定目的,为什么要创建package-lock.json?

时间:2018-09-16 15:45:14

标签: node.js npm package-lock.json npm-shrinkwrap

npm-shrinkwrap.json :锁定node_modules树以及相关性和嵌套相关性,以防止软件包代码在其他计算机上中断。

package-lock.json :锁定node_modules树以及相关性和嵌套相关性,以防止软件包代码在其他计算机上中断。

那么,如果npm已经具有 npm-shrinkwrap.json 用于锁定目的,为什么要创建 package-lock.json

为什么他们创建新的 package-lock.json 文件来解决npm版本兼容性问题,因为开发人员已经在使用 npm-shrinkwrap.json

有任何简单,容易且易于解释的示例答案吗?

2 个答案:

答案 0 :(得分:0)

  

npm默认情况下在源目录中发布大多数文件,并且   人们已经出版了很多年的包装纸。我们不想   破坏兼容性。默认情况下使用--save和收缩包装,   它意外进入并传播的巨大风险   注册表,基本上使我们能够更新部门和   重复数据删除... null。

     

因此,我们选择了一个新名称。我们选择了所有   突然新的锁文件基本上共享所有相同的代码,   格式完全相同

这个主意绝对是将package-lock.json成为收缩包装技术中的最新和最伟大的产品,并将npm-shrinkwrap.json保留给那些非常关心自己的库具有确切的node_modules的人们-npm-收缩包装具有一些特殊的依赖行为设置,而包锁定现在还没有

答案 1 :(得分:0)

他们做同样的事情,但是差异不大

    发布软件包时,npm会忽略
  • package-lock.json ,而不会发布 npm-shrinkwarp.json 。通常不建议使用npm-shrinkwarp.json发布模块
  • 当两者都在根目录中时,将使用 npm-shrinkwarp.json