我想在 Grunt 任务开始时将 NODE_ENV 变量设置为development
or production
,但它看起来并不像我想象的那么简单。
之所以喜欢这个,是因为我使用了 grunt-webpack,它期望 NODE_ENV 正确设置为“开发”或“生产”。但如果可能的话,我也想专门从 grunt 初始化我的任务。
我使用grunt-shell和cross-env模块创建了以下测试 Gruntfile :
function log(err, stdout, stderr, cb, e) {
if (err) {
cb(err);
return;
}
console.log(process.env.NODE_ENV);
console.log(stdout);
cb();
}
module.exports = function(grunt) {
grunt.initConfig({
shell: {
dev: {
command : 'cross-env NODE_ENV="development"',
options: {
callback: log
}
},
dist: {
command : 'cross-env NODE_ENV="production"',
options: {
callback: log
}
}
}
});
grunt.loadNpmTasks('grunt-shell');
};
log() 的第 6 行应该回显 process.env.NODE_ENV 的实际值,但它总是说undefined
,即使我在节点控制台中手动检查它。
如果我从终端手动设置它,比如set NODE_ENV=production
(set
适用于 Windows ),任何地方production
都会像我希望的那样回显 value 。