Composer 没有使用 "dist" 版本,甚至被特别告知

Composer isn't using "dist" versions, even is specifically told to

我有一个托管在私有 git 存储库中的依赖项,并且正在使用 satis 进行包管理。 我已经将对 repo 主分支的提交标记为“1.0.0”,并且在 composer.json 文件中,我希望在其中使用该包,我指定了

"require": {
  "package/name": "~1.0"
},
"repositories": [
{
  "type": "composer",
  "url": "http://myownsatisrepo"
},
"config": {
  "preferred-install": "dist"
}

并且是 运行 命令 composer install --prefer-dist

所以我已经指定了一个稳定的包版本这一事实应该确保 composer 不会只是克隆 repo(包括我不想要的 .git 文件夹),而是下载一袋。安装命令的额外配置标志和参数应该做同样的事情。 不过,composer 只克隆了包。

Composer 只有知道如何获取才能下载分发 ZIP。否则(或者如果获取失败),它将克隆存储库。

当您使用某些众所周知的 Git 存储库托管程序(如 Github 和 Bitbucket)时,Composer 知道它们的 API 结构以及下载 ZIP 文件的位置。如果您正在使用其他东西,则不会。

作为最后的后备方案,Satis 中的元数据理论上可以包含 ZIP 文件的下载 URL。 Satis 允许您配置创建这些文件,但是除了 Composer 元数据之外,您还拥有所有 ZIP 文件的托管能力。如果您不让 Satis 创建 ZIP,并且使用的存储库不提供 Composer 已知的下载功能,那么无论如何您总是会触发存储库的克隆。

请注意,一旦 Composer 以一种或另一种方式获得源代码,它将一直保留下去,直到您删除整个 vendor 文件夹。特别是如果你克隆了存储库,如果 Composer 只是更新到最新的提交然后检查所需的提交,它会更快并且使用更少的流量。