php - 使用 PHP composer 克隆 git repo

标签 php composer-php packagist

我正在尝试使用 composer自动从 github 克隆不在 packagist 中的 git 存储库但它不起作用,我不知道我做错了什么。

我认为我必须像这样将它包含在“存储库”中:

"repositories": [
    {
        "url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
        "type": "git"
    }
],

然后可能将其列在“要求”部分。它应该类似于 this example但它不起作用。它只是给出了这个错误:

Your requirements could not be resolved to an installable set of packages.

有没有人尝试过这样做?

最佳答案

那个包其实是is available through packagist .在这种情况下,您不需要自定义存储库定义。只需确保添加 require (始终需要)具有匹配的版本约束。

一般来说,如果包在 packagist 上可用,不要添加 VCS 存储库。它只会减慢速度。


对于无法通过 packagist 获得的包,请使用 VCS (或 git)存储库,如您的问题所示。这样做时,请确保:

  • “repositories”字段在根 composer.json 中指定(它是一个 root-only 字段,来自所需包的存储库定义被忽略)
  • 存储库定义指向有效的 VCS 存储库
  • 如果类型是“git”而不是“vcs”(如您的问题),请确保它实际上是一个 git repo
  • 您有一个 require对于有问题的包裹
  • require 中的约束与 VCS 存储库提供的版本匹配。您可以使用composer show <packagename>找到可用的版本。在这种情况下 ~2.3将是一个不错的选择。
  • require 中的名称匹配远程 composer.json 中的名称.在这种情况下,它是 gedmo/doctrine-extensions .

这是一个示例 composer.json通过 VCS 存储库安装相同的包:

{
    "repositories": [
        {
            "url": "https://github.com/l3pp4rd/DoctrineExtensions.git",
            "type": "git"
        }
    ],
    "require": {
        "gedmo/doctrine-extensions": "~2.3"
    }
}

VCS repo docs很好地解释了这一切。


如果有一个带有 composer.json 的 git(或其他 VCS)存储库可用,不要使用“包”存储库。包 repos 要求您在定义中提供所有元数据,并且将完全忽略任何 composer.json存在于提供的 dist 和 source 中。它们还有其他限制,例如在大多数情况下不允许正确更新。

避免软件包 repo (see also the docs)。

关于php - 使用 PHP composer 克隆 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954051/

相关文章:

php - 将购物车项目存储在自定义 WordPress 电子商务插件的 cookie 或 DB 上

php - 创建唯一的用户名

php - 如何获取好友总数? Facebook PHP-api

symfony - 将 Symfony 4 应用程序部署到 Google App Engine 时出现安全检查器错误

yii - 特拉维斯.ci : "composer requirements could not be resolved" but everything works locally (Yii2)

php - 使用 PHP 数组实现 jQuery 自动完成

php - Composer : "Content-length mismatch" & "http://packagist.org could not be fully loaded..."

git - 我应该将部署 key 与 Composer 一起使用吗?

php - 为什么 Composer 无法找到/安装我的 Laravel 5.2 包?

php - 从 Composer 包中排除文件