一尘不染

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

node.js

一项新功能包括确定性安装和package-lock.json文件创建。

这个文件应该保存在源代码管理中吗?


阅读 229

收藏
2022-02-12

共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 共享格式,本质上是相同的文件,但允许发布。除非部署 CLI 工具或以其他方式使用发布过程来生成生产包,否则不建议这样做。

如果包的根目录中同时存在 和 ,package-lock.json则将被完全忽略。npm-shrinkwrap.json``package-lock.json

2022-02-12