Gulp concat使用过时的文件信息

时间:2017-04-13 15:37:43

标签: gulp gulp-concat

免责声明:我是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']);

1 个答案:

答案 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']);