【问题标题】:What's the difference between composer.lock and installed.json?composer.lock 和 installed.json 有什么区别?
【发布时间】:2013-10-26 10:07:06
【问题描述】:

我了解composer.lock 旨在确定已安装依赖项的确切版本。但是vendor/composer/installed.json文件有什么作用呢?

两者都包含 JSON,并且都是自动生成的。

【问题讨论】:

标签: composer-php


【解决方案1】:

composer.lock在首次安装或更新时生成。它包含对所使用的确切版本的引用。应该将其提交到版本跟踪存储库中,以允许恢复这种精确的库组合。

installed.json 是 Composer 的内部文件。当您从composer.json 手动删除一个包以从供应商目录中删除文件时使用它。否则,旧的供应商包将永远存在。

【讨论】:

  • 我问的原因正是因为我正在从事一个项目,其中vendor/ 目录受版本控制,原因我不会在这里讨论。在这种情况下,将其与其他所有内容一起提交似乎是谨慎的。
  • 一个非常正当的理由是部署过程当前不允许独立获取依赖项。但即使在那种情况下,我什至不会尝试触摸 vendor 中的任何内容,只在安装/更新后提交它。
  • 我应该推送 installed.json 还是不
  • 那么当installed.json被删除时会不会有什么问题呢?
  • 当手动从 composer.json 中删除包时,Composer 不能像引用 composer.lock 而不是 installed.json 一样容易吗?
【解决方案2】:

installed.json 似乎被 Composer 用作内部存储库,以跟踪供应商目录中实际安装的内容。

我读到composer.lock应该 安装的,installed.json应该 安装的。这在上下文中具有一定的意义,即拥有没有供应商目录的 composer.lock 文件是有效的。你运行composer install,它将安装列出的包 int composer.lock 并将它们写入installed.json

Composers 代码库将installed.json 视为本地存储库。内容被加载到名为localRepositoryInstalledRepositoryInterface 类型变量中。

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    相关资源
    最近更新 更多