2013-03-21 12 views
25

Sto spostando il mio progetto da semplicemente node server.js nell'utilizzo di Grunt.Variabili di ambiente NodeJS in Grunt

Ero solito eseguire la mia applicazione direttamente da webstorm e le variabili di ambiente venivano impostate per me.

Come posso ottenere lo stesso risultato in Grunt?

ho bisogno di uno eseguire grugnito da WebStorm (finestre), oppure impostare env vars durante l'esecuzione grugnito (esplicitamente)

Questo non è un problema durante la distribuzione a causa Heroku prende già cura di impostare la mia env vars.

risposta

47

usare il plugin grugnito-ENV: https://npmjs.org/package/grunt-env

e impostare la configurazione:

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

nel vostro gruntfile si avrà probabilmente definire alcune default-operazione:

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

quindi se eseguire 'grunt default' in un primo momento le tue env-vars sono impostate, e quindi viene eseguito 'another-task'

se si desidera specificare l'ambiente corrente tramite l'opzione della riga di comando è possibile utilizzare grunt.option:

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

in questo esempio se si chiama il vostro compito grugnito con --environment=production produzione sarà impostato, in caso contrario lo sviluppo sarà impostato

+0

Se hai sempre bisogno di accedere alla variabile env nella tua app js (come Ember) puoi usare quel modello https://stackoverflow.com/questions/20742882/how-set-get-environment-specific-variable-in -a-yeoman-ember-app/20974746 # 20974746 – borisrorsvort

+1

Suvate troppo presto e si sono rese conto troppo tardi di effettuare una downvote corretta. Non funziona in Windows (cmd o ps). – rainabba

+0

la libreria estende process.env con i dati di configurazione. Non ho familiarità con node.js su Windows, ma non vedo alcun motivo per cui non dovrebbe funzionare ... – hereandnow78

Problemi correlati