2013-03-21 11 views
25

Przenoszę mój projekt z prostego node server.js do używania Grunta.Zmienne środowiskowe NodeJS w Grunt

Zwykle uruchamiałem aplikację bezpośrednio w webstorm, a zmienne środowiskowe zostałyby ustawione dla mnie.

Jak mogę osiągnąć to samo w Grunt?

muszę uruchamiać chrząknięcie od webstorm (Windows), lub skonfigurować env vars gdy uruchomiony grunt (jawnie)

To nie jest problem podczas wdrażania ponieważ Heroku już dba o ustawienie mojej env vars.

Odpowiedz

47

użyć wtyczki grunt-env: https://npmjs.org/package/grunt-env

i ustawić config:

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

w gruntfile prawdopodobnie będzie zdefiniować pewną domyślną-zadanie:

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

więc jeśli uruchom 'grunt domyślny', początkowo ustawione są twoje env-vars, a następnie "inne zadanie" jest uruchamiane

jeśli chcesz określić bieżące środowisko poprzez opcję wiersza poleceń można użyć grunt.option:

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

w tym przykładzie, jeśli nazywają swoje zadanie grunt z --environment=production produkcji zostanie ustawiony, w przeciwnym razie rozwój zostanie ustawiony

+0

Jeśli kiedykolwiek będziesz potrzebował uzyskać dostęp do zmiennej env w aplikacji js (np. Ember), możesz użyć tego wzoru https://stackoverflow.com/questions/20742882/how-set-get-environment-specific-variable-in -a-yeoman-ember-app/20974746 # 20974746 – borisrorsvort

+1

Wzniesiono zbyt szybko i zdałem sobie sprawę, że zbyt późno, aby właściwie głosować. Nie działa w systemie Windows (cmd lub ps). – rainabba

+0

biblioteka rozszerza process.env o dane konfiguracyjne. nie jestem zaznajomiony z node.js w systemie Windows, ale nie widzę żadnego powodu, dlaczego to nie powinno działać ... – hereandnow78