我正在项目上运行一些grunt任务。其中一个设置一些grunt.options grunt.option(key, value)
,我需要在后续任务var option = grunt.option(key)
中访问。当我尝试在后面的任务中访问这些选项时,这些选项将返回undefined
。由前一任务设置的Grunt任务grunt.option返回undefined
如果我在后面的任务的头部记录变量,则在该任务运行之前显示该变量,并且我无法访问任务配置中以前设置的值。
在设置grunt.option和在另一个任务中使用它以通知变化的咕噜声之间,我需要做些什么?我在这里做了一些固有的错误吗?还是有更好的方式与各种各样的全局变量来做到这一点(我的研究指出我使用grunt.option)
我Gruntfile.js
grunt.log.writeln('loading tasks');
grunt.loadTasks('grunttasks');
grunt.log.writeln('tasks loaded');
grunt.registerTask(
'jenkins',[
'clean', //clears out any existing build folders
'curl', //gets build config file from remote server
'set-env', //sets the grunt.options based on the build config file
'string-replace:config', //attempts to access the new grunt.options
....
....
....
....
]
);
在我的设置ENV任务,我根据curl任务中返回的文本文件的内容设置了一些环境变量。这工作正常,我可以在设置它们后立即记录所有grunt.options,以便我知道它们被正确设置。
设置ENV任务
module.exports = function(grunt) {
grunt.registerTask('set-env', 'set-env', function() {
......
......
for (var i = 0; i < propFile.length; i++) {
if (propFile[i] !== '') {
......
......
keyValues[propName] = propValue;
grunt.option(propName, propValue);
console.log("FROM GRUNT.OPTION " + grunt.option(propName));
......
......
}
}
......
......
});
};
当我尝试从我访问上述任务设置的grunt.options字符串替换(或任何其他后续)任务undefined
返回。如果我在Gruntfile.js开始时设置的测试值这些grunt.options我可以没有问题访问它们:
module.exports = function(grunt) {
grunt.config('string-replace', {
..........
..........
config:{
files: configFiles,
options: {
replacements: [
..........
..........
{
pattern: /var _OPTION_KEY = \"(.*?)\"\;/ig,
replacement: 'var _OPTION_KEY = "'+grunt.option('_OPTION_KEY')+'";' //grunt.option('_OPTION_KEY') here is undefined
}
..........
..........
]
}
}
..........
..........
});
grunt.loadNpmTasks('grunt-string-replace');
}
(我有双人间,三人间和四人间检查,我使用正确的选项键)
模板做到了。非常感谢! – Fraser