2017-04-13 37 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