免责声明:我是gulp的新手
这似乎是显而易见的,但我不能让gulp concat正确地连接另一个gulp任务的输出。这是一个gulp文件,演示了我遇到的问题。
$ go build -x
“task1”应该按顺序包含file1.txt,file2.txt,task2-output.txt和file3.txt。问题是,task2-output.txt未正确包含在内。看来task1包含了运行gulp命令时出现的task2-output.txt的内容。如果在gulp启动时缺少task2-output.txt,则将其省略。如果修改了task2-input.txt,task2-output.txt将被task2修改,但旧版本包含在output.txt中
如果我按顺序单独运行gulp task2和gulp task1,它可以正常工作。当我运行默认任务时失败了。
以下是示例会话:
var gulp = require('gulp');
var concat = require('gulp-concat');
gulp.task('task1', function() {
gulp.src(['file1.txt', 'file2.txt', 'task2-output.txt', 'file3.txt'])
.pipe(concat('output.txt'))
.pipe(gulp.dest('.'))
});
gulp.task('task2', function() {
gulp.src('task2-input.txt')
.pipe(concat('task2-output.txt'))
.pipe(gulp.dest('.'))
});
gulp.task('default', ['task2', 'task1']);
答案 0 :(得分:1)
马克的评论引导我找到了有效的解决方案。我必须为每个任务添加return语句,并将task2添加为task1的依赖项。单独添加return语句并没有解决它。也没有单独添加任务依赖性。两种变化都是必要的。这是工作解决方案。
var gulp = require('gulp');
var concat = require('gulp-concat');
gulp.task('task1', ['task2'], function() {
return gulp.src(['file1.txt', 'file2.txt', 'task2-output.txt', 'file3.txt'])
.pipe(concat('output.txt'))
.pipe(gulp.dest('.'))
});
gulp.task('task2', function() {
return gulp.src('task2-input.txt')
.pipe(concat('task2-output.txt'))
.pipe(gulp.dest('.'))
});
gulp.task('default', ['task2', 'task1']);