Я использовал приложение create-response-app для создания приложения и выбрал конфигурацию. В webpack.config.dev.js и webpack.config.prod.js я настроил NormalModuleReplacementPlugin следующим образом:
new webpack.NormalModuleReplacementPlugin(/(.*)CUSTOMER(\.*)/, function(resource) {
const customerName = process.env.REACT_APP_CUSTOMER;
resource.request = resource.request.replace(/CUSTOMER/, customerName);
})
Целью этого является замена импорта, такого как
import config from '../config/customer/CUSTOMER';
с
import config from '../config/customer/foo';
когда значение переменной REACT_APP_CUSTOMER задано как "foo".
Это отлично работает, когда приложение запускается, но у меня есть некоторые тесты Mocha, которые запускаются через скрипт test-mocha в package.json
"scripts": {
"test-mocha": "NODE_ENV=test node_modules/.bin/mocha --require babel-register --recursive test"
}
Когда этот тест выполняется, замена импорта не происходит. Кажется, что одно из следующих решений проблемы:
- настройте
NormalModuleReplacementPluginкоторый будет использоваться при выполнении тестов - найти способ предоставить макет для
configпри выполнении тестов