Обработка конфигурации InversifyJS в зависимости от среды
Я использовал InversifyJS для обработки DI на моем сервере машинописи. Дело в том, что я хочу внедрить разные реализации в мой код в зависимости от среды.
Есть распространенный сценарий, когда я хочу использовать S3 на производстве, но локальную папку, пока я разрабатываю на своем ноутбуке. Так как я использую interface
чтобы сделать это сообщение, можно было бы иметь два разных файла конфигурации с информацией о контейнере, но загружать контейнер в мои сервисы условно довольно грязно.
Другой вариант - иметь один файл конфигурации, но настраивать одну или другую реализацию в зависимости от среды. Что-то вроде этого:
container.bind<IStorageRepository>(SERVICE_IDENTIFIER.STORAGE).to(
(process.env.ENVIRONMENT === 'prod') ? S3StorageRepository : LocalFolderStorageRepository
);
Но мне это совсем не нравится, потому что если у вас есть три (или более) разных окружения с разными потребностями, тогда это становится немного сумасшедшим.
Есть идеи?
0 ответов
В вашем случае процесс выбора правильной реализации выходит из.to(). Вы можете справиться с этим выше. Присвойте ссылку и передайте ее туда. В моем проекте для таких случаев. Я скрываю процесс сборки контейнера в функции конструктора. В обязательном порядке вы можете справиться со всем.