У меня есть проекты на основе 3 PHP, composer, которые связаны друг с другом следующим образом:
- A API подписки , подключенный к базе данных
- A клиент подписки , который представляет собой оболочку, предоставляющую публичные c методы, в которых API подписки называется
- A пользовательская серверная служба , который требует клиента подписки - Composer и вызывает его методы publi c для создания подписок.
Эти 3 проекта находятся в 3 разных хранилищах, что часто создает проблемы, поскольку API и клиент в настоящее время слабо связаны: иногда мы изменяем что-то в API и забываем, что клиент должен быть обновлен, чтобы соответствовать обновленному API, а затем пользовательский бэкэнд начинает давать сбой.
Вот почему я хотел бы объединить API подписки и клиент подписки : чтобы они были более тесно связаны, и, следовательно, мы снизили бы риск забывать обновлять одно, когда другое изменения.
Я скопировал код клиента в код API и поместил его в подкаталог src
, поэтому теперь проект подписки (это то, к чему я переименовал API подписки) содержит:
|- src
|- api
|- Client
|- composer.json
|- composer.lock
Я также изменил composer.json
, чтобы при сборке пакета из subscription
экспортировался только подкаталог Client
:
{
...
"archive": {
"exclude": ["/*", "!/src/Client"]
},
...
}
После отправки этого хранилища, чтобы пакет построен на Satis, я изменил composer.json
из пользовательской серверной части , так что для него требуется новый пакет подписки вместо клиент подписки :
"require": {
"subscription-client": "^1.0.0"
}
стал:
"require": {
"subscription": "^1.0.0"
}
, но когда я сделал composer install
после этого, я заметил, что все зависимости подписки (включая те, которые клиентская часть не использует) были Загруз.дорожек oaded, в то время как клиентская часть подписки нуждается только в паре. Так что пользовательский бэкэнд теперь имеет десятки зависимостей, которые он никогда не должен использовать (они происходят из части API, но пользовательский бэкэнд не нуждается в них).
Как я могу экспортировать только пользовательские зависимости из моей подписки проекта?