Как разработать с пакетом symlinked composer, но собрать из репозитория vcs? - PullRequest
1 голос
/ 18 октября 2019

При рефакторинге унаследованного кода я пытаюсь работать с пакетом композитора, одновременно работая над проектом, который использует этот пакет.

Композитор позволяет мне добавлять репозитории локальных путей для получения пакета вразработка и символическая ссылка на этот пакет в моем проекте.

<composer.json excerpt>
"repositories": [
    {
        "type": "path",
        "url": "../my-package/",
        "options": {
            "symlink": true
        }
    }
],

...
"require": {
    "my/package": "@dev"
}

Затем я делаю

composer update my/package --prefer-source

Какие символические ссылки просто хороши. Однако при создании проекта на CI-сервере я хочу, чтобы проект извлекал пакет из удаленного репозитория git, поэтому я добавил раздел vcs в свой composer.json.

    {
        "type": "vcs",
        "url":  "git@bitbucket.org:my/package.git"
    }

Однако при сборке через composer install он все еще пытается получить пакет локально, что, конечно, недоступно на CI-сервере. Я думаю, потому что мой composer.lock явно говорит, что пакет получен из пути. Как я могу заставить его работать гладко, как локально, так и на сервере CI? Кажется, мне не хватает приличного рабочего процесса.

То, что я пробовал до сих пор:

  • добавление my/package снова в качестве dev-пакета, но, очевидно, composer.json удалит его, если изтогда no-dev автоматически упаковывает. Кроме того, я не знаю, как указать композитору использовать репозиторий пути для требования dev и репозиторий vcs для требования no-dev.
...