2015-06-02 3 views
4

Grunt выдаст коды выхода, и это фантастически для скриптов, выполняющих задачи grunt, но я хочу, чтобы обрабатывать неудачные задачи grunt после завершения grunt завершает их.Управление ошибкой задачи глобального grunt

Я ожидал найти некоторую функцию обработки ошибок, которую я мог бы установить в 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

Я уверен, что такой функции нет. Но это популярный запрос: 1, 2.

Что можно сделать сейчас? Вы можете написать собственную черновую-задачу, что-то вроде следующие:

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 еще не генерирует никаких событий, но может быть полезен в ваших собственных задачах».).

P.S. Вы рассматривали Gulp для своего проекта?

P.S.S Если вы собираетесь написать свою собственную задачу, не стесняйтесь спрашивать меня о внесении вклада.

Смежные вопросы