Composer 不会安装私有包依赖项

Posted

技术标签:

【中文标题】Composer 不会安装私有包依赖项【英文标题】:Composer won't install private package dependencies 【发布时间】:2018-12-23 15:45:31 【问题描述】:

首先,有一些相关的帖子并不真正适合我的问题。

Composer won't install dependency Composer not installing local package dependencies Composer not installing dependencies of Package

还有更多。

我有一个包含一些私有包的 Symfony 项目。 这些都是vcs引用的:

"repositories": [
    
        "type": "vcs",
        "url": "git@aaaaa.git"
    ,
    
        "type": "vcs",
        "url": "git@xxxxx.git"
    ,
    
        "type": "vcs",
        "url": "git@yyyyy.git"
    
],

这按预期工作。但是,私有包 yyyy 引用了另一个私有包(我们称之为 sub-yyyy),该私有包也被包 composer.json 文件中的 vcs 类型引用。

如果我运行 composer install 它会失败并显示以下消息:

问题 1 - yyyy 的安装请求 -> yyyy]。 - yyyy 需要 sub-yyyy ^1.0.0 -> 找不到匹配的包。

潜在原因:

包名有错别字 根据您的最低稳定性设置,该软件包在足够稳定的版本中不可用,请参阅 https://getcomposer.org/doc/04-schema.md#minimum-stability 了解更多 详情。 这是一个私有包,您忘记添加自定义存储库来查找它

私有包(子yyyy)是v1.0.0标记的,如果它在主项目的composer.json文件中就可以安装。

主项目的composer.json(需要剪掉):


    "name": "main/project",
    "license": "proprietary",
    "type": "project",
    "prefer-stable": true,
    "repositories": [
        
            "type": "vcs",
            "url": "git@aaaaa.git"
        ,
        
            "type": "vcs",
            "url": "git@xxxxx.git"
        ,
        
            "type": "vcs",
            "url": "git@yyyyy.git"
        
    ],

yyyy包的composer.json:


  "name": "yyyy",
  "type": "symfony-bundle",

  "require": 
    "sub-yyyy": "^1.0.0"
  ,

  "repositories": [
    
      "type": "vcs",
      "url": "git@sub-yyyy.git"
    
  ],
  "minimum-stability": "dev",

当我安装引用sub-yyyyyyyy 包时,有什么想法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

您必须将存储库条目添加到主项目中的包sub-yyyy,因为依赖项条目是不可传递的。

来自docs

存储库不是递归解析的。您只能将它们添加到 你的主要composer.json。依赖关系的存储库声明' composer.jsons 被忽略。

你的主项目composer.json 应该是这样的


    "name": "main/project",
    "license": "proprietary",
    "type": "project",
    "prefer-stable": true,
    "repositories": [
        
            "type": "vcs",
            "url": "git@aaaaa.git"
        ,
        
            "type": "vcs",
            "url": "git@xxxxx.git"
        ,
        
            "type": "vcs",
            "url": "git@yyyyy.git"
        ,
        
            "type": "vcs",
            "url": "git@sub-yyyy.git"
        
    ]

【讨论】:

啊,好的。认为有一个更好的解决方案。谢谢

以上是关于Composer 不会安装私有包依赖项的主要内容,如果未能解决你的问题,请参考以下文章

GIT 中的 Composer 和 composer.lock 和合并冲突

为啥没有安装 Composer 的包依赖项?

composer update - 更新单个包时如何跳过更新依赖项

composer.json:项目安装

Github上的资源清单

composer方式安装thinkphp5,安装smarty