Grunt将输出退出代码,这对于执行grunt任务的脚本来说非常棒,但我希望能够在grunt完成后处理失败的grunt任务. 我期待找到某种类型的错误处理函数,我可以在initConfig中设置,但我没有看到任
我期待找到某种类型的错误处理函数,我可以在initConfig中设置,但我没有看到任何东西.同样,即使是“最终”功能也能很好地工作.
基本上,我有一个别名任务,它是我执行的一组任务,其中一个临时更改文件的内容,并在完成所有内容后将内容写回磁盘.我希望仍然能够至少尝试将内容写回磁盘,即使突变发生后的任务失败也是如此.
对此影响的东西会很棒.
grunt.initConfig({ onError: function (error) { // execute my file cleanup }, // this is essentially a "finally" function that executes once grunt // finishes with all tasks. onComplete: function () { // execute my file cleanup } });我很确定,没有这样的功能.但这是一个受欢迎的要求: 1, 2.
现在可以做些什么?您可以编写自定义的grunt-task,如下所示:
var errorCb = function() { callback(); } var doneCb = function() { callback(); } grunt.initConfig({ task_runner: { before: ..., beforeEach: ..., run: ['other_task1', 'other_task2'], after: ..., afterEach: ..., onError: errorCb, onComplete: doneCb }, other_tasks: { ... } });
并注册您的任务:
grunt.registerTask('task_runner', "Tasks' lifecycle", function(task, message) { // foreach task in tasks: grunt.task.run(task) ... // except(`grunt.util.error`) });
据我所知,没有任何美妙的方法可以让任务结果运行.所以这里是monkey-patching.可以挂钩这些函数:grunt.fail
和grunt.log.error.
这里有一些inspiration:1,2.另外,请看grunt-then
.
总而言之,我不能说这是一件容易的事.我希望有一天Grunt会有事件(现在:“请注意,Grunt还没有发出任何事件,但在你自己的任务中仍然有用.”).
附:你有没有考虑过Gulp为你的项目?
P.S.S如果您要编写自定义任务,请随时向我索要.