Обработка конфигурации InversifyJS в зависимости от среды

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

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

Другой вариант - иметь один файл конфигурации, но настраивать одну или другую реализацию в зависимости от среды. Что-то вроде этого:

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

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

Есть идеи?

0 ответов

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

Другие вопросы по тегам