当GruntJS任务失败并采取行动时,是否有办法捕获它?
--force
标志没有帮助,因为我需要知道是否有什么事情发生了,并对此采取了一些措施。
我尝试了一些类似于try-catch的安排,但它不起作用。这是因为grunt.registerTask
将任务推入队列 - 执行不是同步的。
grunt.registerTask('foo', "My foo task.", function() {
try {
grunt.task.run('bar');
} catch (ex) {
// Handle the failure without breaking the task queue
}
});
欢迎创意javascript创意以及GruntJS专有技术。
答案 0 :(得分:1)
这只丑陋的野兽应该适合你:
grunt.registerMultiTask('foo-task', 'my foo task', function() {
try {
console.log(this.data);
throw new Error('something bad happened!');
} catch (e) {
console.log('Ooops:', e);
}
return true;
});
grunt.registerTask('foo', 'Runs foo.', function() {
grunt.config('foo-task', {
hello: 'world'
});
grunt.task.run('foo-task');
});
通过以下方式运行:grunt foo
输出:
Running "foo" task
Running "foo-task:hello" (foo-task) task
world
Ooops: Error: something bad happened!
at Object.<anonymous>
<stacktrace here>
Done, without errors.
答案 1 :(得分:0)
我没有对它进行过测试,但是在任何Javascript代码中都可以在需要时添加事件监听器到grunt对象和从任务中激活事件 ...
不知道这是否完全适合您的问题,但我会尝试一下。
希望它有所帮助!