一尘不染

是否提交由npm 5创建的package-lock.json文件?

node.js

npm
5已于今天发布
,其中一项新功能包括通过创建package- lock.json文件进行确定性安装。

该文件应该保留在源代码管理中吗?

我假设它类似于yarn.lockcomposer.lock,这两个都应该保留在源代码管理中。


阅读 347

收藏
2020-07-07

共1个答案

一尘不染

是的,package-lock.json旨在被检查到源代码管理中。如果您使用的是npm 5,则可能会在命令行上看到:created a lockfile as package-lock.json. You should commit this file.根据npm help package-lock.json

package- lock.json会为npm修改node_modules树或的任何操作自动生成package.json。它描述了生成的确切树,因此无论中间依赖项更新如何,后续安装都可以生成相同的树。

该文件旨在提交到源存储库中 ,并具有多种用途:

  • 描述依赖关系树的单个表示,这样可以确保队友,部署和持续集成安装完全相同的依赖关系。

  • 为用户提供一种工具,使其可以“时间旅行”到以前的状态,node_modules而不必提交目录本身。

  • 为了通过可读的源代码控制差异更好地了解树的变化。

  • 并允许npm跳过先前安装的软件包的重复元数据解析,从而优化安装过程。

关于package-lock.json它的一个关键细节是它无法发布,并且如果在顶级软件包之外的任何地方找到它,它将被忽略。它与npm-
shrinkwrap.json(5)共享一种格式,该格式本质上是相同的文件,但允许发布。除非部署CLI工具或使用发布过程来生产生产软件包,否则不建议这样做。

如果软件包的根目录中同时存在package-lock.jsonnpm-shrinkwrap.jsonpackage- lock.json将被完全忽略。

2020-07-07