Gulp Notify функция глобального успеха
Я ищу функцию успеха gulp-notify, которую я могу использовать повторно. Я использую один и тот же формат для всех своих задач и хотел бы его очистить. Вот пример того, что я делаю сейчас:
gulp.task('build-css', function() {
const s = gsize();
return gulp.src('src/css/main.css')
.pipe(plumber({ errorHandler: onError }))
.pipe(cssmin())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('dist/css'))
.pipe(s)
.pipe(notify({
title: function () {
return '<%= file.relative %> - ' + s.prettySize;
},
onLast: true,
subtitle: "Successfully Compiled",
message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ",
templateOptions: {
hour: new Date().getHours(),
minute: new Date().getMinutes(),
second: new Date().getSeconds()
}
}))
});
Я повторно использую ту же функцию уведомления с несколькими задачами. Я пытался сделать что-то подобное, но каждая попытка выдает ошибку. Эта конкретная ошибка с сантехником - Can't Pipe to Undefined
var onSuccess = function () {
const s = gsize();
notify({
title: function () {
return '<%= file.relative %> - ' + s.prettySize;
},
onLast: true,
subtitle: "Successfully Compiled",
message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ",
templateOptions: {
hour: new Date().getHours(),
minute: new Date().getMinutes(),
second: new Date().getSeconds()
}
})
};
...
gulp.task('build-css', function() {
const s = gsize();
return gulp.src('src/css/main.css')
.pipe(plumber({ errorHandler: onError }))
.pipe(autoprefixer({
browsers: ['last 6 versions'],
cascade: false
}))
.pipe(cssmin())
.pipe(rename({suffix: '.min'}))
.pipe(s)
.pipe(onSuccess())
.pipe(gulp.dest('dist/css'))
.pipe(reload({stream: true}));
});
Любые мысли о том, как это сделать, приветствуются!
РЕДАКТИРОВАТЬ После решения qballers единственная проблема - мой плагин размера gulp, возвращающий неопределенный для размеров файла:
const s = gsize();
// Success Message
var notifyGeneric = {
title: function () {
return '<%= file.relative %> - ' + s.prettySize;
},
onLast: true,
subtitle: "Successfully Compiled",
message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ",
templateOptions: {
hour: date.getHours(),
minute: date.getMinutes(),
second: date.getSeconds()
}
};
...
gulp.task('build-css', function() {
const s = gsize();
return gulp.src(srcCssPath + 'main.css')
.pipe(plumber({ errorHandler: onError }))
.pipe(autoprefixer({
browsers: ['last 6 versions'],
cascade: false
}))
.pipe(cssmin())
.pipe(rename({suffix: '.min'}))
.pipe(s)
.pipe(notify(notifyGeneric))
.pipe(gulp.dest(cssPath))
.pipe(reload({stream: true}));
});
1 ответ
Решение
Не уверен, что это решение, на которое вы рассчитываете, но вы можете просто использовать объектные литералы, чтобы сохранить дубликаты кода.
var notifyGeneric = {
title: function () {
return '<%= file.relative %> - ' + this.s.prettySize;
},
onLast: true,
subtitle: "Successfully Compiled",
message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ",
templateOptions: {
hour: new Date().getHours(),
minute: new Date().getMinutes(),
second: new Date().getSeconds()
},
s: {}
};
gulp.task('build-css', function() {
notifyGeneric.s = gsize();
return gulp.src('src/css/main.css')
.pipe(plumber({ errorHandler: onError }))
.pipe(cssmin())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('dist/css'))
.pipe(notifyGeneric.s)
.pipe(notify(notifyGeneric))
});