Как объявить NODE_ENV с помощью .env на веб — сервере?

#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 сервер.