Как установить NODE ENV для производства / разработки в OS X

для использования в express.средах и JS. Есть предложения?

13 ответов


перед запуском вашего приложения, вы можете сделать это в консоли

export NODE_ENV=production

или если вы находитесь в windows, вы можете попробовать следующее:

SET NODE_ENV=production

или вы можете запустить приложение, как это:

NODE_ENV=production node app.js

вы также можете установить его в ваш JS файл:

process.env.NODE_ENV = 'production';

но я не предлагаю делать это в вашем файле времени выполнения, так как нелегко открыть VIM на вашем сервере и изменить его на production. Вы можете сделать конфигурацию.JSON-файл в каталоге и при каждом запуске приложения, он читает из него и устанавливает конфигурацию.


в пакет.в JSON:

{
  ...
  "scripts": {
    "start": "NODE_ENV=production node ./app"
  }
  ...
}

затем запустите в терминале:

npm start

export NODE_ENV=production - это плохое решение, оно исчезает после перезагрузки.

если вы больше не хотите беспокоиться об этой переменной-добавьте ее в этот файл:

/etc/environment

не используйте синтаксис экспорта, просто напишите (в новой строке, если какой-то контент уже есть):

NODE_ENV=production

он работает после перезагрузки. Вам не придется повторно вводить экспорт NODE_ENV=производство команда больше нигде и просто использовать узел с чем угодно-навсегда, РМ2...

для heroku:

heroku config:set NODE_ENV="production"

что на самом деле по умолчанию.


никто не упомянул .env здесь еще? Сделайте .env файл в корневом каталоге приложения, затем require('dotenv').config() и прочитайте значения. Легко изменяется, легко читается, кросс-платформа.

https://www.npmjs.com/package/dotenv


heroku config:set NODE_ENV="production"

Это хорошая статья о NODE_ENV:http://www.hacksparrow.com/running-express-js-in-production-mode.html.

для автоматической настройки от Grunt вы можете использовать https://npmjs.org/package/grunt-env плагин.


чтобы не беспокоиться о том, запускаете ли вы свои скрипты в Windows, Mac или Linux, установите пакет cross-env. Тогда вы можете легко использовать свои скрипты, например:

"scripts": {
    "start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
    "start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}

массивный реквизит для разработчиков этого пакета.


для Windows Powershell используйте эту команду

$env:NODE_ENV="production" ; node app.js

на OSX я бы рекомендовал добавить export NODE_ENV=development на ~/.bash_profile и/или ~/.bashrc и/или ~/.profile.

лично я добавляю эту запись в свой ~/.bashrc и затем ~/.bash_profile ~/.profile импортируйте содержимое этого файла, чтобы он был согласован в разных средах.

после внесения этих дополнений, не забудьте перезагрузить терминал, чтобы забрать настройки.


если вы используете webpack в вашем приложении, вы можете просто установить его там, используя DefinePlugin...

так в вашей , выберите переменной NODE_ENV to production:

plugins: [
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': '"production"',
  })
]

Если вы находитесь в windows. Откройте cmd в правой папке, затем сначала

set node_env={your env name here}

нажмите Enter, затем вы можете начать свой узел с

node app.js

он начнется с вашей настройки env


Даниэль имеет фантастический ответ, который является лучшим подходом для правильного процесса развертывания (set и forget).

для тех, кто использует express. Вы можете использовать grunt-express-server, который также является фантастическим. https://www.npmjs.org/package/grunt-express-server


для тех, кто использует create-react-app на Mac:

"scripts": {
  "start": "HTTPS='true' react-scripts-ts start"
}