Gulp-rev-collector无法正常工作

时间:2015-03-22 10:47:01

标签: gulp

我不明白这段代码有什么问题。当我第一次运行它时,rev_collector不起作用。我的意思是:' rev'和'清洁'效果很好,但索引http中的css文件名没有改变(' rev_collector')。 但是当我再次启动时它能正常工作。

var gulp = require('gulp'),
    less = require('gulp-less'),
    rev_append = require('gulp-rev-append'),
    rev = require('gulp-rev'),
    revCollector = require('gulp-rev-collector'),
    gutil = require('gulp-util'),
    rimraf = require('rimraf'),
    revOutdated = require('gulp-rev-outdated'),
    path = require('path'),
    through = require('through2');

gulp.task('rev', function(){
    gulp.src('./src/less/*.less')
        .pipe(less())
        .pipe(rev())
        .pipe(gulp.dest('./www/css/'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('./src/manifest/'));
});

gulp.task('rev_collector', ['rev'], function(){
    return gulp.src(['./src/manifest/**/*.json', './www/index.html'])
        .pipe(revCollector({
            replaceReved: true
        }))
        .pipe(gulp.dest('./www/'));
});

function cleaner() {
    return through.obj(function(file, enc, cb){
        rimraf( path.resolve( (file.cwd || process.cwd()), file.path), function (err) {
            if (err) {
                this.emit('error', new gutil.PluginError('Cleanup old files', err));
            }
            this.push(file);
            cb();
        }.bind(this));
    });
}

gulp.task('clean', ['rev_collector'], function() {
    gulp.src( ['./www/**/*.*'], {read: false})
        .pipe( revOutdated(1) ) // leave 2 latest asset file for every file name prefix.
        .pipe( cleaner() );

    return;
});

gulp.task('rev_all', ['rev', 'rev_collector', 'clean']);

1 个答案:

答案 0 :(得分:0)

今天,我遇到了同样的问题。 在我从这个页面得不到任何东西后,我搜索了很多。 我知道我的问题来自加载文件的顺序。

所以我使用了一个新的插件:

var runSequence = require('run-sequence');

然后,我重写了加载代码:

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


gulp.task('build', function (done) {
    runSequence(
         ['clean'],
         ['images'],
         ['statcstyles', 'staticjs'],
         ['scripts'],
         ['styles'],
         ['html'],
    done);
});

代码确保在manifest create之后始终加载revCollector。

然后我的问题解决了。

我希望它可以帮到你。