При рефакторинге унаследованного кода я пытаюсь работать с пакетом композитора, одновременно работая над проектом, который использует этот пакет.
Композитор позволяет мне добавлять репозитории локальных путей для получения пакета вразработка и символическая ссылка на этот пакет в моем проекте.
<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.