Композитор требует локального пакета
у меня есть несколько библиотек [Foo и Bar], которые я разрабатываю совместно, но все еще технически отдельные вещи. Ранее я только что переопределил автозапуск, чтобы понравиться "Foo": "../Foo/src"
, но теперь, когда я добавил зависимость от жратвы в Foo, бар переворачивает его крышку, потому что это не одна из его зависимостей.
каталог структуру:
/home/user/src/
Foo/
src/
FooClient.php
composer.json
Bar/
src/
BarClient.php
composer.json
теоретическое заявление о загрузке: [в баре / композиторе.json]
"require": {
"local": "../Foo/composer.json"
}
пример код:
require('vendor/autoload.php');
$f = new BarBarClient(new FooFooClient());
как я могу решить эту проблему без настройки локального РЕПО композитора? Я хочу поддерживать их как отдельные пакеты, только то, что один требует другого, и поэтому обрабатывает зависимости другого.
редактирование после ответа:
благодаря infomaniac я сделал следующее:
инициализировал репозиторий git:
cd ~/src/Foo && git init && echo -e "vendorncomposer.lock" > .gitignore && git add ./ && git commit -m "Initial Commit"
добавлена конфигурация композитора:
"require": {
"sammitch/foo": "dev-master"
},
"repositories": [{
"type": "vcs",
"url": "/home/sammitch/src/Foo"
}],
а то composer update
!
2 ответа:
вы можете использовать композитора репозитории характеристика
https://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository
вместо использования формата http укажите путь к файлу на диске.
способ связать с локальным пакетом в разработке-это сначала добавить в ваш основной проект
composer.json
a хранилище, например:"repositories": [ { "type": "path", "url": "/full/or/relative/path/to/development/package" } ]
вы также должны либо иметь версию, указанную в вашем пакете разработки
composer.json
или то, как я это делаю, чтобы потребовать пакет с помощью@dev
, например:composer require "vendorname/packagename @dev"
он должен выводить:
- Installing vendor/packagename (dev-develop) Symlinked from /full/or/relative/path/to/development/package
The
@dev
в команде require важно, композитор использует это для пикапа исходный код и символическая ссылка на ваш новый пакет.это флаг стабильности, добавленный к ограничению версии (см. ссылка на пакет).
они позволяют дополнительно ограничить или расширить стабильность пакета выходит за рамки минимум-стабильность установочный.
флаги минимальной стабильности:
доступные параметры (в порядке стабильности) являются
dev
,alpha
,beta
,RC
иstable
.