Как структурировать машинописный репозиторий микросервисов на github - PullRequest
0 голосов
/ 21 апреля 2019

Я работаю над созданием коллекции микросервисов. Я использовал следующую структуру, где каждый элемент является своим собственным хранилищем.

  • my-project-logger
  • my-project-numbers-service импорт:
    • my-project-logger определения типов + объект класса (полная реализация)
    • my-project-alphabet-service определения типа
  • my-project-alphabet-service импорт:
    • my-project-logger определения типов + объект класса (полная реализация)
  • my-project-client импорт:
    • my-project-logger определения типов
    • my-project-numbers-service определения типов
    • my-project-alphabet-service определения типов

Затем в моем package.json я сохраняю все зависимости, которые не требуются для определений типов, в devDependencies, поэтому они не устанавливаются при импорте пакета (только при клонировании из git).

Проблема возникает, когда, например, в случае my-project-logger мне нужны только определения типов на клиенте, но мне нужна полная реализация служб. Я не уверен, как заставить репозиторий иметь два разных режима установки. Один, который устанавливает только определения типов, а другой - всю реализацию. Неспособность использовать npm (для публикации) также усложняет ситуацию.

Я также пытался использовать подход monorepo с lerna, но это делает развертывание микросервисов независимо с помощью docker крайне неэффективным, поскольку вам приходится вручную указывать каждую локальную зависимость в файле docker (поскольку я не могу использовать веб-сайт npm для публикации).

Последний подход, который я попробовал, - это создать репозиторий my-project-types и иметь в нем типы для каждого репозитория, но это раздражало, потому что каждый раз, когда вы меняли тип, вам приходилось перетягивать репозиторий типов для каждого сервиса. это зависело от этого.

1 Ответ

2 голосов
/ 21 апреля 2019

Я думаю, что правильный способ решить эту проблему - опубликовать несколько пакетов. Вы можете опубликовать отдельный пакет только с определениями типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...