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