我的印象是在grunt.registerTask(taskName,taskList)中,taskList将按顺序运行(即一个完成,然后移动到下一个)。我猜那不是这样吗?
鉴于此任务:
grunt.registerTask('local-debug', [
'clean',
'concat:local',
'ngconstant:common',
'targethtml:local',
'copy:debug'
]);
如何在运行副本之前确保concat / ngconstant / targethtml已完成?我有问题因为ngconstant在concat完成之前运行了。
编辑:任务未按顺序运行的详细信息。
'concat:local'创建'ngconstant:common'使用的aggregate.json文件。如果我删除现有的aggregate.json文件,则ngconstant:常见任务错误,因为缺少aggregate.json文件(但是在ngconstant运行之后,文件确实被创建)。此外,如果我不删除文件,只是更改类似于更改concat使用的源文件中的版本号,则ngconstant创建的文件不会获取更改,因为它不会等到新聚合。 json由concat创建。
编辑2:任务代码
concat: {
options: {
banner: '{"appConfig": {',
footer: "}}",
separator: ','
},
local: {
src: ["app/config/common-config.json", "app/config/local.json"],
dest: "app/config/aggregate-config.json"
}
},
ngconstant: {
options: {
space: ' ',
wrap: '(function(){\n\n"use strict";\n\n {%= __ngModule %}\n\n}());',
name: 'CoreConfig',
dest: 'app/scripts/config.js'
},
common: {
constants: grunt.file.readJSON('app/config/aggregate-config.json')
}
}
答案 0 :(得分:2)
好的,明白了。
Grunt遵循以下步骤:
所以会发生的情况是,您的文件aggregate-config.json
在1. 1期间被读取并将config.ngconstant.common.constants
设置为当前值(来自您的PREVIOUS运行的结果)。
然后3.发生,并生成一个新的aggregate-config.json
但未使用(在任务之间不重新读取配置)。
但是,如果您将字符串传递给ngconstant.constants
,则会将其解释为文件名,并在运行任务时读取 (步骤3)你想要的结果:
ngconstant: {
common: {
constants: 'app/config/aggregate-config.json'
}
}