我有以下Grunt任务(简化):
rev: {
files: {
src: ['dist/**/*.{js,css}']
}
},
processhtml: {
dev: {
options: {
data: {
appJs: grunt.file.expand('dist/**/*.js')
}
},
files: {
'dist/index.html': 'app/index.html'
}
}
}
首先运行grunt-rev
任务,该任务采用常规JS并在文件名前加上哈希码。然后运行grunt-processhtml
任务,在这种情况下,我想获取grunt-rev
生成的所有JS文件名,并将它们作为自定义数据传递。
这段代码的问题似乎是首次执行gruntfile时急切执行grunt.file.expand
方法,而不是processhtml
任务运行时,所以这意味着我得到了一个不同的列表来自grunt.file.expand
的文件超出了我的预期,因为它没有考虑grunt-rev
任务的结果。
有没有办法在实际运行任务时强制延迟评估值?
答案 0 :(得分:5)
我将定义一个自定义任务,该任务将在(当被调用时)为processhtml任务设置选项并运行它。
以下内容:
grunt.task.registerTask('foo', 'My foo task.', function() {
grunt.config("processhtml.dev", {
options: {
data: {
appJsgrunt: file.expand('dist/**/*.js')
}
}
});
grunt.task.run("processhtml.dev");
});