k0p*_*kus 131 npm npm-shrinkwrap package-lock.json
随着npm @ 5的发布,package-lock.json除非npm-shrinkwrap.json已经存在,否则它现在将写入.
我在全球范围内安装了npm @ 5:
npm install npm@5 -g
Run Code Online (Sandbox Code Playgroud)
现在,如果npm-shrinkwrap.json在以下期间找到a :
npm install
Run Code Online (Sandbox Code Playgroud)
将打印一条警告:
npm WARN read-shrinkwrap This version of npm
is compatible with lockfileVersion@1,
but npm-shrinkwrap.json was generated for lockfileVersion@0.
I'll try to do my best with it!
Run Code Online (Sandbox Code Playgroud)
所以我的外卖是我应该用the替换收缩膜package-lock.json.
然而,为什么会有新的格式呢?那可以package-lock.json做什么npm-shrinkwrap.json不可以?
Mar*_*ery 148
这些文件具有完全相同的内容,但在npm如何处理它们方面存在一些差异,在docs网站上以及npm repo中的docs文件中描述,首先明确解决这两个文件之间的差异:
package-lock.json从未发布到npm,而npm-shrinkwrap默认情况下package-lock.json 将忽略不在顶级程序包中的文件,但会遵循属于依赖项的shrinkwrap文件npm-shrinkwrap.json向后兼容npm版本2,3和4,而package-lock.json只有npm 5+才能识别您可以通过运行将现有转换package-lock.json为a .npm-shrinkwrap.jsonnpm shrinkwrap
从而:
package-lock.json因为它是默认设置,其名称对于npm初学者来说更清晰; 或者,npm-shrinkwrap.json如果您难以确保开发团队中的每个人都在npm 5+以上,那么您可能希望使用向后兼容性与2-4.(请注意,npm 5于2017年5月25日发布;由于大多数人最终会升级,因此从该日期开始,向后兼容性将变得越来越不重要.)如果您是发布你的包NPM,您有以下两种选择:
package-lock.json来准确记录您安装的依赖项的版本,但允许安装程序包的人使用与您指定的版本范围兼容的任何版本的依赖项package.json,或者npm-shrinkwrap.json来保证安装程序包的每个人都获得完全相同的所有依赖项版本
文档(非常简洁地)描述的官方视图是选项1应该用于库(可能是为了减少当许多包的依赖关系都依赖于相同辅助依赖的略微不同版本时导致的包复制量)但是,对于将要全局安装的可执行文件,该选项2可能是合理的.
Ser*_*usM 27
这个想法绝对是package-lock.json成为最新和最伟大的shrinkwrap技术,npm-shrinkwrap.json将保留给那些非常关心他们的库具有精确node_modules的少数人 - 和对于想要使用npm @> = 2的CI来安装特定树而不必碰撞其npm版本的人.
新的lockfile("package-lock.json")基本上共享所有相同的代码,格式与npm-shrinkwrap完全相同(您可以在彼此之间重命名!).这也是社区似乎理解的东西:"它有一个锁定文件"似乎与人们点击这么快.最后,拥有一个新文件意味着我们可以使用shrinkwrap进行相对低风险的向后兼容,而不必像父帖子中提到的那样做一些奇怪的事情.
Cod*_*eld 12
我认为这个想法是默认情况下会发生--save和shrinkwrap,但是避免在不需要的情况下发生收缩包装的任何潜在问题.所以,他们只是给它一个新的文件名,以避免任何冲突.来自npm的人在这里解释得更彻底:
相关报价:
npm默认发布源目录中的大多数文件,人们多年来一直在发布shrinkwraps.我们不想破坏兼容性.默认情况下使用--save和shrinkwrap,它有很大的风险,它意外地进入并通过注册表传播,基本上使我们能够更新deps和重复数据删除... null.
所以我们选择了一个新名字.我们突然选择了一个新名字.新的lockfile基本上共享所有相同的代码,完全相同的格式
package-lock.json仅使用 only 来保证版本npm ci(因为如果与 发生冲突,则会npm install覆盖package-lock.jsonpackage.json)。
npm-shrinkwrap.jsonnpm ci和都保证版本npm install。
| 归档时间: |
|
| 查看次数: |
38063 次 |
| 最近记录: |