2017-04-13 78 views
0

免责声明Concat的:我是新来吞掉咕嘟咕嘟使用陈旧的文件信息

这似乎是显而易见的,但我不能让一饮而尽CONCAT正确串接从另一个一饮而尽任务的输出。这是一个吞噬文件,证明我遇到的问题。

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” 是应该包括FILE1.TXT,FILE2.TXT,TASK2-output.txt的,和file3.txt的顺序。问题是,task2-output.txt没有正确包含。看来task1包含了task2-output.txt的内容,就像运行gulp命令时出现的那样。如果当gulp启动时task2-output.txt缺失,它将被忽略。如果task2-input.txt被修改,task2-output.txt被task2修改,但旧版本被包含在output.txt中

如果我特别按照该顺序分别运行gulp task2和gulp task1,它可以正常工作。这是当我运行失败的默认任务。

下面是一个简单的会话:

C:\Users\Ken\htdocs\gulptest>type file1.txt 
File 1 
C:\Users\Ken\htdocs\gulptest>type file2.txt 
File 2 
C:\Users\Ken\htdocs\gulptest>type task2-input.txt 
Task 2 
C:\Users\Ken\htdocs\gulptest>type file3.txt 
File 3 
C:\Users\Ken\htdocs\gulptest>gulp 
[10:35:15] Using gulpfile ~\htdocs\gulptest\gulpfile.js 
[10:35:15] Starting 'task2'... 
[10:35:15] Finished 'task2' after 7.76 ms 
[10:35:15] Starting 'task1'... 
[10:35:15] Finished 'task1' after 3.67 ms 
[10:35:15] Starting 'default'... 
[10:35:15] Finished 'default' after 15 μs 

C:\Users\Ken\htdocs\gulptest>type output.txt 
File 1 
File 2 
File 3 
+0

尝试添加return语句到你的任务ALA:返回gulp.src ..... – Mark

+0

添加return语句几乎是固定的。我还必须将task2添加为task1的依赖项。我会发布一个答案。感谢您的建议! –

+0

很高兴帮助。现在我不认为你需要在默认任务中进行task2调用。 – Mark

回答

1

马克的评论使我对工作的解决方案。我必须为每个任务添加return语句,并将task2添加为task1的依赖项。单独添加返回语句并未解决问题。也没有单独添加任务依赖关系。这两个改变都是必要的这是工作解决方案。

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']); 
+0

尽管已经使用runSequence从理论上完成了我想要的功能,但这对我也有效。 – Joren