gulp和gulp-diff的问题

时间:2014-11-14 21:59:18

标签: angularjs gulp

我希望我的gulpfile.js能够在我的角度连接文件中进行ng-annotate运行之前进行比较,之后我可以看到它所做的注入。我无法理解语法。我不断得到错误的不同版本,说gulp无法统计我的文件。

我坚持的代码如下。我很乐意一次性完成,但也没有成功。

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'))
});

1 个答案:

答案 0 :(得分:4)

gulp-diff正试图对原始源文件进行区分,但是当您正在处理多个文件串联的结果时,磁盘上没有原始源文件。我建议拆分你的gulp任务并写入临时的.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的地方)。