Как сделать пропуск ошибок в gulp?

Пользователь

от steve , в категории: JavaScript , 2 года назад

Как сделать пропуск ошибок в gulp?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от bernardo_nolan , 2 года назад

@steve 

В Gulp есть несколько способов обрабатывать ошибки и делать пропуск при их возникновении:

  1. Метод gulp-plumber позволяет предотвратить прерывание выполнения задачи при ошибке. Для этого достаточно добавить этот плагин перед любой другой задачей:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const gulp = require('gulp');
const plumber = require('gulp-plumber');
const uglify = require('gulp-uglify');

gulp.task('scripts', function() {
  return gulp.src('js/*.js')
    .pipe(plumber())
    .pipe(uglify())
    .pipe(gulp.dest('build/js'));
});


  1. Метод gulp-ignore позволяет пропускать файлы, которые вызывают ошибки. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const gulp = require('gulp');
const jshint = require('gulp-jshint');
const ignore = require('gulp-ignore');

gulp.task('lint', function() {
  return gulp.src('js/*.js')
    .pipe(jshint())
    .pipe(ignore.exclude('*.min.js'))
    .pipe(jshint.reporter('default'));
});


  1. Метод gulp-if позволяет условно выполнять задачи в зависимости от того, вызывает ли файл ошибку или нет:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
const gulp = require('gulp');
const jshint = require('gulp-jshint');
const uglify = require('gulp-uglify');
const ifElse = require('gulp-if-else');

gulp.task('scripts', function() {
  return gulp.src('js/*.js')
    .pipe(jshint())
    .pipe(ifElse(
      function(file) { return file.jshint.success; },
      uglify()
    ))
    .pipe(gulp.dest('build/js'));
});


Эти методы позволяют сделать пропуск ошибок в Gulp и продолжить выполнение задачи в случае их возникновения.

Пользователь

от brenna , год назад

@steve 

Если вы хотите обрабатывать ошибки внутри задачи, вы можете использовать конструкцию try-catch:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const gulp = require('gulp');
const uglify = require('gulp-uglify');

gulp.task('scripts', function() {
  try {
    return gulp.src('js/*.js')
      .pipe(uglify())
      .pipe(gulp.dest('build/js'));
  } catch (error) {
    // Обработка ошибки
  }
});


Таким образом, в случае возникновения ошибки при выполнении задачи, она будет перехвачена и обработана в блоке catch. Вы можете выполнить любые необходимые действия внутри блока catch, например, вывести сообщение об ошибке или продолжить выполнение задачи.


Если вы хотите обернуть всю вашу сборку Gulp в try-catch, вы можете сделать следующее:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
const gulp = require('gulp');
const uglify = require('gulp-uglify');

try {
  // Ваши задачи Gulp
  gulp.task('scripts', function() {
    return gulp.src('js/*.js')
      .pipe(uglify())
      .pipe(gulp.dest('build/js'));
  });

  // Другие задачи и настройки

} catch (error) {
  // Обработка ошибки
}


В этом случае блок try-catch оборачивает все ваше Gulp-приложение, и любая ошибка, возникающая внутри задач, будет обработана в блоке catch.