我尝试创建两个gulp任务,并且我希望第二个任务是获取第一个输出流并继续应用插件。
我可以将第一个任务的返回值传递给第二个任务吗?
以下不起作用:
// first task to be run
gulp.task('concat', function() {
// returning a value to signal this is sync
return
gulp.src(['./src/js/*.js'])
.pipe(concat('app.js'))
.pipe(gulp.dest('./src'));
};
// second task to be run
// adding dependency
gulp.task('minify', ['concat'], function(stream) {
// trying to get first task's return stream
// and continue applying more plugins on it
stream
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('./dest'));
};
gulp.task('default', ['minify']);
有没有办法做到这一点?
答案 0 :(得分:1)
您无法将流传递给其他任务。
但您可以使用gulp-if
模块跳过某些管道方法,具体取决于条件。
var shouldMinify = (0 <= process.argv.indexOf('--uglify'));
gulp.task('script', function() {
return gulp.src(['./src/js/*.js'])
.pipe(concat('app.js'))
.pipe(gulpif(shouldMinify, uglify())
.pipe(gulpif(shouldMinify, rename({suffix: '.min'}))
.pipe(gulp.dest('./dest'));
});
执行这样的任务以缩小
gulp script --minify
答案 1 :(得分:0)
我正在寻找相同的解决方案,但最终只是链接功能。 这非常灵活。 如果有人有更好的解决方案而不使用其他软件包,请分享。
function concatenate() {
return gulp
.src(['./src/js/*.js'])
.pipe(concat('app.js'));
}
function minify() {
return this
.pipe(uglify())
.pipe(rename({suffix: '.min'}));
}
function output() {
return this.pipe(gulp.dest('./src'));
}
gulp.task('concat', function() {
return output.call(concatenate());
});
gulp.task('minify', function() {
return output.call(minify.call(concatenate()));
});
gulp.task('default', ['minify']);