Публикация пакета composer с пользовательскими файлами и зависимостями - PullRequest
0 голосов
/ 25 марта 2020

У меня есть проекты на основе 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, но пользовательский бэкэнд не нуждается в них).

Как я могу экспортировать только пользовательские зависимости из моей подписки проекта?

...