如何在 Gulp 任务中为多个管道制作立面
How to make facade for several pipes in Gulp task
我的 gulpfile.js 中有以下任务:
gulp.task('css', function() {
return gulp.src('theme.scss')
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(gulp.dest('dist'));
});
我想将所有这些管道移动到一个模块以获得类似的东西:
gulp.task('css', function() {
return gulp.src('theme.scss')
.pipe(theme())
.pipe(gulp.dest('dist'));
});
可能吗?
我想象的最简单的方法是这样的:
function theme(stream) {
return stream.pipe(less())
.pipe(minify())
.pipe(prefix())
}
gulp.task('less', function() {
return theme(gulp.src('theme.less'))
.pipe(gulp.dest('public'));
})
(用 LESS 完成,b/c gulp-ruby-sass 现在有了一些新界面)。
如果你想灵活一点,你可以在 theme-function 中任意管道:
function theme(stream) {
return stream.pipe(minify())
.pipe(prefix())
}
gulp.task('less', function() {
return theme(gulp.src('theme.less').pipe(less()))
.pipe(gulp.dest('public'));
})
它可能没有你想要的那么漂亮,但它没有太多额外的包裹就完成了交易。
我是用lazypipe做的,我的独立模块是这样实现的:
module.exports = function () {
var pipes = lazypipe()
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...);
return pipes();
};
我的 gulpfile.js 中有以下任务:
gulp.task('css', function() {
return gulp.src('theme.scss')
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(gulp.dest('dist'));
});
我想将所有这些管道移动到一个模块以获得类似的东西:
gulp.task('css', function() {
return gulp.src('theme.scss')
.pipe(theme())
.pipe(gulp.dest('dist'));
});
可能吗?
我想象的最简单的方法是这样的:
function theme(stream) {
return stream.pipe(less())
.pipe(minify())
.pipe(prefix())
}
gulp.task('less', function() {
return theme(gulp.src('theme.less'))
.pipe(gulp.dest('public'));
})
(用 LESS 完成,b/c gulp-ruby-sass 现在有了一些新界面)。 如果你想灵活一点,你可以在 theme-function 中任意管道:
function theme(stream) {
return stream.pipe(minify())
.pipe(prefix())
}
gulp.task('less', function() {
return theme(gulp.src('theme.less').pipe(less()))
.pipe(gulp.dest('public'));
})
它可能没有你想要的那么漂亮,但它没有太多额外的包裹就完成了交易。
我是用lazypipe做的,我的独立模块是这样实现的:
module.exports = function () {
var pipes = lazypipe()
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...)
.pipe(...);
return pipes();
};