gpt4 book ai didi

javascript - Gulp 通知全局成功函数

转载 作者:行者123 更新时间:2023-12-02 14:15:30 25 4
gpt4 key购买 nike

我希望有一个可以重用的被调用的 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-size 插件返回未定义的文件大小:

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}));
});

最佳答案

不确定这是否是您想要的解决方案,但您可以使用对象文字来节省代码重复。

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))
});

关于javascript - Gulp 通知全局成功函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39068897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com