#webpack #environment-variables #babeljs
Вопрос:
У меня возникли трудности NODE_ENV
с тем, чтобы вложить значение .env
«тогда webserver
«, чтобы прочитать его.
Для структурирования файлов это выглядит так
- utils
- build.js (https://github.com/lxieyang/chrome-extension-boilerplate-react/blob/master/utils/build.js)
- env.js (https://github.com/lxieyang/chrome-extension-boilerplate-react/blob/master/utils/env.js)
- webserver.js (https://github.com/lxieyang/chrome-extension-boilerplate-react/blob/master/utils/webserver.js)
- .env
- webpack.config.js (https://github.com/lxieyang/chrome-extension-boilerplate-react/blob/master/webpack.config.js)
Что я хотел бы сделать, так это объявить NODE_ENV
стоимость (либо производство, либо разработка), используя .env
или .env.development
/ .env.production
и не просто напрямую объявляя process.env.NODE_ENV = 'development'
, как в webserver.js
Итак, для .env
NODE_ENV=development
BABEL_ENV=development
ASSET_PATH=/
Возможно ли это сделать?
Таким образом, в принципе , вместо прямого объявления process.env.NODE_ENV = 'development'
внутри webserver.js
и process.env.NODE_ENV = 'production'
внутри build.js
, я бы хотел, чтобы они были объявлены с помощью .env
или .env.development
/ .env.production
.
Ответ №1:
Для этого вам, возможно, захочется взглянуть на dotenv
посылку.
Вы можете использовать следующий, самый простой пример для заполнения process.env
:
require('dotenv').config()
Комментарии:
1. Я использовал веб-пакет dotenv, и я думаю, что он не будет читать мой .env, если он вызывается webpack.js
2. @user16691768 он будет использоваться
process.cwd()
по умолчанию для определения пути к вашему.env
файлу. Поэтому, если вы создаете свой веб-сервер и обмениваетесь.env
файлами, вам нужно будет обратить внимание на то, откуда запускается процесс при запуске вашего веб-сервера. В качестве альтернативы, если вам не нужно обмениваться.env
файлами и вы не возражаете против использованияEnvironmentPlugin
, вы можете использоватьdotenv
в своемwebpack.config.js
… в этом случае вы, возможно, захотите выбрать переменные среды напрямую, поскольку вам не понадобитсяdotenv
сервер.