如何要求使用作曲家的分叉?

2022-08-30 06:24:06

这是我的,我想在Github上使用Nodge的lessphp项目的分支composer.json

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

但是当我运行时,我得到这个错误:composer update

nodge/lessphp dev-master ->找不到匹配的包。

我不知道如何正确要求这个分叉。


答案 1

最常见(也是最简单的)方法是使用VCS存储库。

您所要做的就是将分叉添加为存储库,并更新版本约束以指向自定义分支。自定义分支名称必须dev- 为前缀。

假设你分叉了 monolog/monolog 并创建了一个名为 bugfix 的分支,你会像这样更新你的 composer.json:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

请注意,除了指定 bugfix 分支之外,您不会更改 require 语句。您仍然引用上游包 (),而不是您的个人分叉 (),并且分支名称以 为前缀。您可以在文档中阅读详细信息monolog/monologigorw/monologdev-


答案 2

使用VCS的工作原理:

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

但是,如果我需要一个具有此功能的模块,则它不起作用。它安装原始项目,而不是分叉。composer.json

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

我应该再次提到存储库。这正常吗?


推荐