2014-11-14 86 views
2

我希望我的gulpfile.js比較我的角色級聯文件在ng-annotate運行之前和之後的內容,以便我可以查看它所做的注入。我無法完全理解語法。我不斷收到不同版本的錯誤說,吞嚥不能統計我的文件。gulp和gulp-diff的問題

我卡在下面的代碼。我很樂意一次完成,但是沒有成功。

gulp.task('scripts', function() { 

    gulp.src(['public/app/**/*.js']) 
     .pipe(concat('main-noanotate.js')) 
     .pipe(rename({suffix: '.noannotate.js'})) 
     .pipe(gulp.dest('public/dist')); 


    return gulp.src(['public/app/**/*.js']) 
     .pipe(concat('main.js')) 
     .pipe(ngAnnotate()) 
     .pipe(diff('main.noannotate.js')) 
     .pipe(diff.reporter({ fail: true })) 
     .pipe(gulp.dest('public/dist')) 
}); 
+0

我還在爲此而苦苦掙扎。我得到了一些工作(發佈了博客文章),但它仍然是不正確的。我無法在正常的完整吞嚥默認處理中運行我的腳本任務。 http://peterkellner.net/2014/11/14/angular-ngannotate-better-way/ – 2014-11-15 01:20:20

回答

4

gulp-diff試圖對差異比較原始的源文件,但你處理多個文件串聯的結果工作在磁盤上沒有原始的源文件。我建議分開你的吞嚥任務並寫入臨時目錄.build

以下是清除構建工作區的示例。

要設置的東西了,創建一個新的目錄,然後運行:

npm install del gulp gulp-concat gulp-diff gulp-header; mkdir -p src; echo "foo" > src/foo.txt; echo "bar" > src/bar.txt 

然後建立這個gulpfile.js:

'use strict'; 

var gulp = require('gulp'); 
var diff = require('gulp-diff'); 
var header = require('gulp-header'); 
var concat = require('gulp-concat'); 
var del = require('del'); 

gulp.task('default', ['clean']); 

gulp.task('clean', ['build'], function(cb) { 
    del(['.build'], cb); 
}); 

gulp.task('build', ['concat'], function() { 
    return gulp.src('.build/all.txt') 
    .pipe(header('//stream test\n')) 
    .pipe(diff()) 
    .pipe(diff.reporter()) 
    .pipe(gulp.dest('./dist')); 
}); 

gulp.task('concat', function() { 
    return gulp.src('src/*.txt') 
    .pipe(concat('all.txt')) 
    .pipe(gulp.dest('.build')); 
}); 

然後嘗試運行gulp。它應該連接文件並將輸出放入臨時目錄.build。那個文件然後用來區分。在上面的示例中,header正在完成修改文件的工作(這可能是您應用ngAnnotate的地方)。

+0

完美!只是經過測試,每次都有效。我欠你天空先生! – 2014-11-16 02:05:23