2014-11-14 69 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