Подтвердить что ты не робот

Как вы делаете grunt.js по умолчанию не аварийно?

Я использую Grunt для компиляции CoffeeScript и Stylus с задачей просмотра. У меня также есть мой редактор (SublimeText), который позволяет сохранять файлы каждый раз, когда я нахожусь вдали от них (я ненавижу потерять работу).

К сожалению, если Grunt удаляет синтаксическую ошибку в любом из файлов, которые он компилирует, он выдает предупреждение и завершает работу с помощью Aborted due to warnings. Я могу остановить это, пройдя --force. Есть ли способ отключить поведение по умолчанию (или контролировать, какие предупреждения о задачах достаточно важны, чтобы выйти из Grunt?

4b9b3361

Ответ 1

Зарегистрируйте свою собственную задачу, в которой будут выполняться требуемые задачи. Затем вам нужно передать опцию force:

grunt.registerTask('myTask', 'runs my tasks', function () {
    var tasks = ['task1', ..., 'watch'];

    // Use the force option for all tasks declared in the previous line
    grunt.option('force', true);
    grunt.task.run(tasks);
});

Ответ 2

Я попробовал asgoth решение с предложением Адама Хатчинсона, но обнаружил, что флаг силы был отменен немедленно к ложному. Чтение grunt.task API-документов для grunt.task.run, в нем указано, что

Каждая заданная задача в taskList будет запущена сразу после завершения текущей задачи в указанном порядке.

Это означало, что я не мог просто установить флаг силы на false сразу после вызова grunt.task.run. Решение, которое я нашел, заключалось в том, чтобы иметь явные задачи, устанавливающие флаг force в false:

grunt.registerTask('task-that-might-fail-wrapper','Runs the task that might fail wrapped around a force wrapper', function() {
    var tasks;
    if ( grunt.option('force') ) {
        tasks = ['task-that-might-fail'];
    } else {
        tasks = ['forceon', 'task-that-might-fail', 'forceoff'];
    }
    grunt.task.run(tasks);
});

grunt.registerTask('forceoff', 'Forces the force flag off', function() {
    grunt.option('force', false);
});

grunt.registerTask('forceon', 'Forces the force flag on', function() {
    grunt.option('force', true);
});