懒惰地评估Grunt任务选项

时间:2014-02-28 14:56:51

标签: gruntjs

我有以下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任务的结果。

有没有办法在实际运行任务时强制延迟评估值?

1 个答案:

答案 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");
});