【问题标题】:Why is repository local directive in composer not working?为什么作曲家中的存储库本地指令不起作用?
【发布时间】:2021-01-11 18:23:46
【问题描述】:

有一个项目“OctoberCMS”,它有一个名为“rain”的库,即。一个依赖。我使用以下方法将它们克隆到我的桌面:

git clone --branch develop git@github.com:octobercms/october.git
git clone --branch develop git@github.com: octobercms/library.git

(实际上是克隆的分叉版本,但无论如何都显示了上面的原始 repo URL) 所以问题是我想对图书馆项目进行更改和 PR。所以我在 october 文件夹中打开了 composer.json 然后添加了:

"repositories": [
    {
        "type": "path",
        "url": "../library",
        "options": {
            "symlink": true
        }
    }
],

由于主 OctoberCMS 项目已经有 october/rain 即库项目作为在其作曲家中声明的依赖项,我将代码从 "october/rain": "1.1.*", 更改为 "october/rain": "@dev",,希望它会符号链接并加载本地 repo。但它没有用。

我认为 OctoberCMS 的其他依赖项,即 systembackendcms 也需要 `"october/rain": "1.1.*",也许这就是 composer 在我的本地加载 packagist 版本的原因克隆。因此,我尝试使用 replace 指令,因为我读到它有助于告诉依赖项在满足时忽略块中的任何内容,

"replace" : {
    "october/rain": "~1.1.0"
},

希望作曲家会认为这是由主项目的作曲家指令与@dev 来满足的,但这也不起作用。当我最终删除了 3 个要求时,即:

"october/system": "1.1.*",
"october/backend": "1.1.*",
"october/cms": "1.1.*",

然后符号链接起作用,并且确实引用了我的本地存储库,但是该项目失败,因为它的依赖项不存在。所以我很困惑我能做些什么来解决这个问题。

【问题讨论】:

    标签: composer-php dependency-management packagist


    【解决方案1】:

    告诉 composer 使用 develop 分支,但创建一个 inline alias 到满足其他依赖项的版本:

    {
        "require": {
            ...
        
            "october/rain": "dev-develop as 1.1.x-dev",
    
            ...
        }
    }
    

    为了进一步开发,我建议你更新october/rain存储库中的branch alias

    {
        "extra": {
            "branch-alias": {
                "dev-development": "1.1.x-dev"
            }
        }
    }
    

    这需要随着每个发布/开发阶段而改变。

    【讨论】:

      猜你喜欢
      • 2015-06-28
      • 1970-01-01
      • 2016-12-13
      • 2013-08-21
      • 2017-11-26
      • 1970-01-01
      • 2019-03-20
      相关资源
      最近更新 更多