Обработка конфигурации InversifyJS в зависимости от среды - PullRequest
0 голосов
/ 01 июня 2018

Я использую InversifyJS для обработки DI на моем сервере машинописи.Дело в том, что я хочу внедрить различные реализации в мой код в зависимости от среды.

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

Другойвариант заключается в том, чтобы иметь один файл конфигурации, но настраивать одну или другую реализацию в зависимости от среды.Примерно так:

container.bind<IStorageRepository>(SERVICE_IDENTIFIER.STORAGE).to(
    (process.env.ENVIRONMENT === 'prod') ? S3StorageRepository : LocalFolderStorageRepository
);

Но мне это совсем не нравится, потому что если у вас есть три (или более) разных окружения с разными потребностями, тогда это становится немного сумасшедшим.

Есть идеи?

1 Ответ

0 голосов
/ 23 декабря 2018

В вашем случае процесс выбора правильной реализации выходит из .to ().Вы можете справиться с этим выше.Присвойте ссылку и передайте ее туда.В моем проекте для таких случаев.Я скрываю процесс сборки контейнера в функции конструктора.В обязательном порядке вы можете справиться со всем.

...