У меня есть локальный проект PHP (веб-сайт), и я хочу использовать другой проект, который я создал (крошечный веб-фреймворк), в качестве пакета Composer для проекта веб-сайта.Я разрабатываю их в тандеме, но хочу сохранить их как отдельные проекты;при развертывании веб-сайта я хочу использовать Composer для установки проекта фреймворка в виде пакета, точно так же, как и с Guzzle или любым другим обычным пакетом Composer.
В проекте веб-сайта есть следующее composer.json
:
{
"repositories": [
{
"type": "path",
"url": "/local/path/to/framework/package"
"options": {
"symlink": true
}
}
],
"require": {
"my/framework": "dev-master",
"guzzlehttp/guzzle": "6.3.3"
}
}
В /local/path/to/framework/package/composer.json
У меня есть:
{
"name": "my/framework",
"description": "A tiny framework.",
"autoload": {
"psr-4": {
"MyFramework\\": "src"
}
}
}
Я запускаю php composer.phar update
, и он устанавливает символическую ссылку на пакет фреймворка в моем проекте веб-сайта.Если я обновлю код в фреймворке, он сразу станет доступен для кода сайта.Это здорово.
Однако позже я хочу развернуть проект веб-сайта на своем веб-сервере.Для чистого развертывания у меня есть сценарий развертывания, который экспортирует архивную копию соответствующей ветки git repo веб-сайта, а затем запускает php composer.phar install
, чтобы убедиться, что все необходимые пакеты установлены.С помощью вышеуказанного конфига сценарий развертывания создает символическую ссылку на пакет фреймворка, что, очевидно, бесполезно, когда артефакт развертывания архивируется и передается по scp на веб-сервер.
Если я удаляю symlink
При указанном выше параметре мне нужно запускать php composer.phar update
каждый раз, когда я делаю какие-либо изменения в пакете фреймворка, что раздражает, поскольку я разрабатываю пакеты в тандеме.Но затем при развертывании пакет копируется, а не является символической ссылкой;это хорошо для развертывания, за исключением того, что оно всегда копируется в ветку master
(потому что я указал dev-master
в composer.json
).
Есть ли способ настроить Composer, чтобы я мог иметь удобстволокального symlinked пакета для разработки, но чтобы позволить сценарию развертывания получить чистую копию пакета Framework без необходимости изменять composer.json
каждый раз, когда я хочу развернуть?
Я также пытался изменить тип репозиторияна vcs
вместо path
, но затем Composer клонирует репозиторий пакетов фреймворка, и мне действительно не нужен клон репозитория в моем локальном дереве vendor/
, ни во время разработки, ни при развертывании,Я просто хочу иметь возможность иметь дерево ссылок (которое дает мне мгновенные обновления) во время разработки, и иметь чистый пакет, установленный для развертывания.
Возможно, мне придется смириться с тем, чтобы должным образом разработать проект фреймворка,«То есть как пакет Composer, который я помечаю фактическими номерами версий выпуска, а затем обновляю проект моего веб-сайта, чтобы использовать определенную версию, когда наступает время для развертывания.Я до сих пор не нашел самый простой способ сделать это.