首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Composer:从叉子扩展另一个的包

Composer:从叉子扩展另一个的包
EN

Stack Overflow用户
提问于 2015-06-08 21:50:16
回答 1查看 386关注 0票数 0

我有以下情况: GitHub和Packagist上有包GitHub。我决定将其分叉到tcb13/package1中,以添加一些代码(这些代码最终将被合并到原始项目中,但这需要时间)。

稍后,我开发了另一个包,tcb13/package1-extension,它通过将分支tcb13/package1的一些方法继承到新的类来扩展它.

在我的tcb13/package1-extensioncomposer.json上,我写道:

代码语言:javascript
复制
{
    "name": "tcb13/package1-extension",
    "description": "...",
    "keywords": [

    ],
    "homepage": "https://github.com/tcb13/package1-extension",
    "license": "MIT",
    "authors": [

    ],
    "repositories":
    [
        {
            "type": "vcs",
            "url": "https://github.com/tcb13/package1/"
        }
    ],
    "require": {
        "author/package1": "dev-master"
    },

我告诉composer,我的扩展包需要author/package1,而且还有一个and存储库https://github.com/tcb13/package1/,并将包版本设置为dev-master,这样composer就可以从修改过的叉子下载author/package1,而不是原来的包……(如果我让它从tcb13/package1下载,这是行不通的)。

我向GitHub提交了上面的代码,并试图在一个新项目中要求tcb13/package1-extension,composer说:

代码语言:javascript
复制
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for tcb13/package1-extension dev-master -> satisfiable by tcb13/package1-extension[dev-master].
    -  tcb13/package1-extension dev-master requires `author/package1` dev-master -> no matching package found.

为什么会出错?当我开发我的扩展包时,我可以要求author/package1作为dev-master,因为它指向了我的叉回购,但是当我尝试要求tcb13/package1-extension时,它似乎没有查找我的叉子,而是尝试到原始项目寻找分支.为什么?

而且,这是我应该使用叉作为依赖项的方式吗?还有别的路吗?我最初试图要求作为tcb13/package1的叉子,但它会失败,但要求它,因为author/package1也告诉作曲家,我有一个额外的存储库工作到现在为止。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-11 01:48:11

我设法解决了这个问题。根据composer的说法,这不是一个错误,而是由于安全性而通过设计发生的事情。

来自GitHub 评论

考虑一下:您有一个依赖于我的包的项目。我依赖于一个对您的应用程序至关重要的包。我碰巧做了一个叉子来引入一个新特性,并意外地用我的composer.json中的存储库标记了一个发行版。您碰巧更新了您的包,并得到了我的叉子,这个叉子可能会损坏,而不是您在定义包依赖项时所期望的那样。

为了能够做我想做的事情,我不得不在我的最终项目tcb13/final-project中手动添加author/package1叉的URL (就像我在tcb13/package1-extension上所做的那样),比如:

代码语言:javascript
复制
{
    "repositories":
    [
        {
            "type": "vcs",
            "url": "https://github.com/tcb13/package1/" // Fork of author/package1
        },
        {
            "type": "vcs",
            "url": "https://github.com/tcb13/package1-extension"
        }
    ],
    "require": {
        "author/package1": "dev-master", // Reference to the original package, composer will fetch this from my fork defined above...
        "tcb13/package1-extension": "dev-master" // My current extension package
    }
}

composer update之后,一切都如期而至。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30719684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档