Здравствуйте. Есть приложение на Реакте в которое мне нужно передать режим работы: разработка или публикация.
В package.json есть две команды для запуска Вебпака. В каждую через переменные окружения передаётся режим.
package.json
"scripts": {
"dev": "webpack-dev-server --env.mode=development",
"build": "webpack --env.mode=production"
}
В файле с настройками Вебпака переданный режим можно получить через env.mode.
webpack.config.js
module.exports = function(env) {
return {
mode: env.mode,
entry: ...,
output: ...,
plugins: [],
}
}
Как теперь этот режим передать Реакту? За несколько часов поисков мне удалось только найти способ передать в массив plugins вызов new webpack.DefinePlugin(), туда нужно передать объект, в объекте свойство 'process.env', а там будет объект. В этот объект можно передать любые названия свойств, но значения можно будет брать только если они присутствуют в process.env файла с настройками Вебпака.
webpack.config.js
module.exports = function(env) {
return {
mode: env.mode,
entry: ...,
output: ...,
plugins: [
new webpack.DefinePlugin(
{
'process.env': {
'MODE': JSON.stringify(process.env.npm_package_scripts_build)
}
}
)
],
}
}
Теперь в любом файле Реакта я, если обращусь к process.env, получу объект
{ MODE: "webpack --env.mode=production" }
Отсюда можно получить строку с режимом. Но всё это выглядит дико. Я не могу просто передать строку типа
new webpack.DefinePlugin(
{
'process.env': {
'MODE': 'development'
}
}
)
Это не сработает. Как и другие способы найденные в Сети. Если ли нормальный прямолинейный способ отправки данных из Вебпака в Реакт?