【问题标题】:Developing with Composer path repository and merge plugin, how to avoid update of composer.lock?使用 Composer 路径存储库和合并插件进行开发,如何避免 composer.lock 的更新?
【发布时间】:2018-02-24 22:56:09
【问题描述】:

情况如下。

我正在开发依赖于 package-bpackage-a。后者托管在 bitbucket 上:

projects/
├── package-a/
├── package-b/

我需要对 package-b 进行更改并在不推送代码的情况下查看结果并执行composer update 然后,当完成工作时,我'将推送一个新标签并将 package-a 部署到生产服务器。

所以我最终使用了composer-merge-plugingComposer path repositories,配置如下:

这是package-acomposer.json

{
    "name": "my/package-a",
    "require": {
        "my/package-b": "^1.0"
    },
    "repositories": [
        {
            "type": "vcs",
            "url":  "git@bitbucket.org:my/package-b.git"
        }
    ],
    "extra": {
        "merge-plugin": {
            "include": [
                "composer.local.json"
            ]
        },
        "replace": true
    }
}

这个文件将包括composer.local.json(只在我的本地机器上!这个文件没有提交也没有推送到生产服务器),我说的是“使用dev-master版本和路径存储库”:

{
    "require": {
        "my/package-b": "dev-master"
    },
    "repositories": [
        {
            "type": "path",
            "url":  "../package-b"
        }
    ]
}

如果我从 package-a 运行 composer install,那么设置很好,那么 package-b 是符号链接的,我可以直接使用它。

但是当我使用Deployer(也对composer.lock 文件进行版本控制)将package-a 部署到我的服务器时,它会执行composer install 但锁定文件包含对package 的引用-b@dev-master 使用路径存储库(这是错误的)。

知道如何解决这个问题吗?我确定这是一个常见的,但我无法得到它。

【问题讨论】:

    标签: git composer-php development-environment dependency-management


    【解决方案1】:

    要帮助开发包,您可以拥有composer install the source of package-b instead of the distribution

    内部package-a

    rm -rf vendor/package-b
    composer update --prefer-source package-b
    

    这应该将package-b 克隆到vendor 目录中。从那里,您可以在 vendor/package-b 中进行更改,并查看在当前应用程序 (package-a) 中反映的更改。

    当您对package-b 中的更改感到满意时,您可以关闭提交更改。您对package-b 的工作将完成。

    在部署package-a 之前,您需要确保在您的composer.lock 文件中引用的project-b 提交已被推送到远程(您所说的bitbucket)并且是最新的。

    您甚至可能根本不需要单独结帐project-b。在project-a内部做任何需要的工作。 (只是一种可能)


    让您的生活变得非常轻松的一件事是开始标记您的软件包的版本。

    与其追逐单独的移动目标,不如开始考虑您需要添加到package-b 以使package-a 中的新功能发挥作用...添加该功能并发布它。那么你对package-a 的工作是“更新到package-b 的新版本,这样我就可以使用很酷的新功能x

    这将有助于您的发布过程、改进功能规划并总体上提供更清洁的体验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 2019-12-31
      • 2014-11-01
      • 2015-03-15
      • 2016-09-20
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多