【问题标题】:Problems with gulp and gulp-diffgulp 和 gulp-diff 的问题
【发布时间】:2014-11-14 21:59:18
【问题描述】:

我希望我的 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'))
});

【问题讨论】:

标签: angularjs gulp


【解决方案1】:

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 的地方)。

【讨论】:

  • 完美!刚刚测试过,每次都能正常工作。我欠你天空先生!
猜你喜欢
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2017-03-30
相关资源
最近更新 更多