Задание без глотка завершается с недопустимым стилем
Во-первых, репозиторий с очень простым примером моей проблемы: https://github.com/nkoder/example-of-gulp-less-zero-exit-on-error
Я хочу определить конвейер сборки gulp, который не работает при любой ошибке. Этот конвейер будет использоваться в автоматизированном процессе (например, Continuous Integration), поэтому мне нужна команда build для возврата ненулевого кода завершения при ошибке. Это работает для меня с недопустимыми шаблонами Jade или непроходными тестами, запускаемыми с Karma.
Проблема в том, когда я использую gulp-less
подготовить CSS из LESS. Всякий раз, когда я добавляю любой шаг конвейера после gulp-less
При выполнении все ошибки "расходуются", и вся задача завершается с 0. Но это не должно.
- Первый вопрос: как заставить
wrong
задача потерпеть неудачу с ненулевым кодом выхода? (решено, см. ответ ниже) - Второй вопрос: почему
error
событие выпущено вless()
вызов с последующим канальным потоком не делает всю задачу по возврату ненулевого кода выхода? Ненулевое значение возвращается в некоторых других подобных случаях, например. в отказе Jade или ESLint. (еще не решено)
Версии:
- узел 5.11.0
- нпм 3.8.6
- глоток 3.9.1
- без глотка 3.1.0
1 ответ
Слушай error
событие, а затем выйдите из процесса явно:
gulp.task('wrong', function () {
return gulp
.src('invalid-styles.less')
.pipe(less().on('error', function(error) {
console.log(error.message);
process.exit(1);
}))
.pipe(gulp.dest('generated-styles.css'));
});