API Node.js предоставляет объект process
, который хранит переменные среды внутри своего свойства env
.Каждая переменная среды, установленная перед временем выполнения, будет внутри process.env
.
Например:
$ NODE_ENV=production node -e 'console.log(process.env.NODE_ENV)'
будет выводить:
production
В вашем конкретном случае вы можетеиспользуйте process.env
внутри вашего Gruntfile.js, а затем, при запуске grunt, вы можете использовать его, как в примере выше.
Образец Gruntfile.js
с переменными среды
Адаптировано из Grunt.js веб-сайт
module.exports = function(grunt) {
grunt.initConfig({
jshint: {
files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],
options: {
globals: {
jQuery: true
}
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: process.env.PRODUCTION ? [] : ['jshint']
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['jshint']);
};
Затем, если вы запустите
$ grunt watch # PRODUCTION environment variable is not set
, он выполнит задачу jshint
при просмотре files
.С другой стороны, если вы установите переменную PRODUCTION
и выполните ту же команду
$ PRODUCTION=true grunt watch
, при просмотре files
.
она не будет выполнять никаких задач.