Переменные среды NodeJS в Grunt

Я перевожу свой проект с простого node server.js на использование Grunt.

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

Как я могу добиться того же в Grunt?

Мне нужно либо запустить grunt из webstorm (Windows), либо настроить env vars при запуске grunt (явно)

Это не проблема при развертывании, потому что heroku уже позаботится о настройке моих env vars.


person bevacqua    schedule 21.03.2013    source источник


Ответы (1)


используйте плагин grunt-env: https://npmjs.org/package/grunt-env

и установите свою конфигурацию:

grunt.initConfig({
  env : {
    options : {
      //Shared Options Hash
    },
    dev : {
      NODE_ENV : 'development',
      DEST     : 'temp'
    }
  },
  'another-task': {}
});

в вашем gruntfile вы, вероятно, определите какую-нибудь задачу по умолчанию:

grunt.registerTask('default', ['env', 'another-task']);

поэтому, если вы запускаете 'grunt default', сначала устанавливаются ваши env-vars, а затем запускается 'another-task'

если вы хотите указать текущую среду с помощью параметра командной строки, вы можете использовать grunt.option:

grunt.initConfig({
  env : {
    options : {
      //Shared Options Hash
    },
    dev : {
      NODE_ENV : grunt.option('environment') || 'development',
      DEST     : 'temp'
    }
  },

в этом примере, если вы вызываете свою задачу grunt с --environment=production, будет установлено производство, в противном случае будет установлено развитие

person hereandnow78    schedule 27.03.2013
comment
Если вам когда-нибудь понадобится доступ к переменной env в вашем js-приложении (например, Ember), вы можете использовать этот шаблон stackoverflow.com/questions/20742882/ - person borisrorsvort; 07.01.2014
comment
Проголосовали слишком рано и поняли, что слишком поздно, чтобы проголосовать правильно. Не работает в Windows (cmd или ps). - person rainabba; 01.09.2014
comment
библиотека расширяет process.env вашими данными конфигурации. Я не знаком с node.js в Windows, но я не вижу причин, по которым он не должен работать ... - person hereandnow78; 01.09.2014
comment
Также необходимо добавить grunt.loadNpmTasks('grunt-env'); - person h-kippo; 19.12.2014
comment
Как вы используете файл JSON, как он описывается в документации? В моем файле key.json есть { "KEY": "VALUE"}, а у меня env.dev.src установлено значение key.json, но когда я пытаюсь использовать process.env.key в своем коде, он возвращается undefined. Должен ли файл быть в определенном порядке? - person occasl; 08.08.2016
comment
Я настроил его для чтения переменных env из файла .env, но я не могу прочитать их в моем файле. Есть идеи, как это сделать? Спасибо! - person DraQ; 30.03.2020