gulp-notify - получить имя файла, а не весь путь, с ошибкой
Я использую gulp-notify
а также gulp-plumber
ловить любые ошибки от gulp-sass
и сообщите мне, прежде чем он выдаст ошибку в gulp и остановит весь процесс сборки. Однако ошибка отображается с gulp-notify
не особенно полезен... он содержит полный путь к файлу с ошибкой; Скорее всего, я буду знать, каков путь к файлу, поэтому мне действительно нужно знать имя файла и номер строки (и номер столбца в качестве добавленного, но не обязательного бонуса), а также фактическое сообщение об ошибке. Вот мой код:
gulp.task('styles', function () {
var onError = function(err) {
notify.onError({
title: "Gulp",
subtitle: "Build Error!",
message: "<%= error.message %>",
sound: "Beep"
})(err);
this.emit('end');
};
gulp.src('assets/styles/source/style.scss')
.pipe(plumber({errorHandler: onError}))
.pipe(sass({
style: 'compressed',
errLogToConsole: false
}))
.pipe(gulp.dest('assets/styles/build'))
.pipe(autoprefixer({
browsers: ['last 2 versions', 'ie 9', 'ios 6', 'android 4'],
cascade: false
}))
.pipe(gulp.dest('assets/styles/build'))
.pipe(minifyCSS({
keepSpecialComments: '*'
}))
.pipe(gulp.dest('./'))
.pipe(reload({stream: true}));
});
Там больше (как gulp-watch
, browsersync
, некоторые вещи JS), но я думаю, что выше, это все, что нужно для решения проблемы. Дайте мне знать, если нет!
Поэтому мой вопрос: как мне изменить сообщение об ошибке, чтобы оно показывало только имя файла, номер строки и сообщение об ошибке (например, _header.scss:17 - неверное имя свойства)? В настоящее время я использую error.message
но я не могу найти больше тегов, которые могу использовать, чтобы получить то, что я хочу показать.
Спасибо!
1 ответ
Вот как я решил эту проблему:
.pipe(sass(
({
style: 'compressed',
errLogToConsole: false,
onError: function(error) {
notify({
title: "SASS ERROR",
message: "line " + error.line + " in " + error.file.replace(/^.*[\\\/]/, '') + "\n" + error.message
}).write(error);
}
})
)
)
Я также заметил, что я могу предоставить только один разрыв строки "\n", поэтому я не смог разделить каждый фрагмент информации, которую я хотел, на отдельную строку.