【问题标题】:Specify dependency outside of project root in composer在作曲家中指定项目根目录之外的依赖项
【发布时间】:2017-08-04 13:03:53
【问题描述】:

我有一个项目目录。这些中的每一个都来自一个 git repo。

其中一些项目是 REST API,我希望将所有内容都指定为项目依赖项,如下所示:

htdocs
|- restApi1
|- restApi2
    |- Vendor
        |-Guzzle
|- restApi3

所以项目 2 依赖于 restApi1 和 restApi3。 如果我安装restApi2并构建时缺少restApi1或restApi3,我想要做的是'git checkout'。如果它已经被签出,在composer installupdate 上,我希望它到git pull 并重建为自定义命令,就是这样。 由于我将这些设置作为项目,并且我可能正在跨两个项目进行更改,如果我像这样作为依赖项拉入:

htdocs
|- restApi1
|- restApi2
    |- Vendor
        |- Guzzle
        |- restApi1
        |- restApi3
|- restApi3

我必须努力将我的更改拉入他们的存储库,使用新的 URL,这会扰乱我的工作流程。 由于我通过 localhost 上的 http 访问项目,因此我可以从任何地方查看任何版本,并将所有内容视为一个大型项目,我的所有代码库都出现一次。

我想知道作曲家是否有办法做到这一点,或者这是否是错误的做法。 如果有更好的方法与上述冲突,我也愿意切换我的流程。 我考虑过编写一个在 htdocs 上运行的脚本,它可以遍历并提取所有内容,但我认为在 composer 文件中将其他项目指定为依赖项会揭示更多关于我们内部项目如何相互使用的信息。

【问题讨论】:

    标签: php git build dependencies composer-php


    【解决方案1】:

    您可以将restApi1和restApi3添加到您的composer.json中:

    "require" : {
        ...
        "myproject/restApi1": "dev-master",
        "myproject/restApi3": "dev-master"
    },
    "repositories": {
        "myproject/restApi1": {
            "url": "https://github.com/myproject/restApi1.git",
            "type":"git"
        },
        "myproject/restApi3": {
            "url": "https://github.com/myproject/restApi3.git",
            "type":"git"
        },
    }
    

    然后composer update 每次你想要新的更新。

    另一个选项是使用git submodules

    【讨论】:

    • 我已经在 vhosts 中使用了这种方法,因为我使用 HTTP 而不是通过自动加载器来访问它们,但是,我使用 require-dev 做到了。这意味着我的开发副本和我用于测试的副本完全分开,而且这样,我就有了一种确定的方法来确定我的应用程序中的用途。
    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 2014-03-10
    • 2021-10-22
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多