Fork me on GitHub

gulp常用插件之gulp-rev-outdated使用

更多gulp常用插件使用请访问:gulp常用插件汇总


gulp-rev-outdated这是一款旧的静态资产修订文件过滤器。
我们可以使用gulp rev来缓存一些资产。源文件的每次修改都会导致新的修改资产创建。如果使用单独的 http://static.exsample.com/ 域来分发静态资产,我们会遇到大量累积的已修改资产文件的问题。如果我们有几个不同的前端(例如[www-1.exsample.com,www-2.exsample.cpm。。。www-12.exsample com])使用不同的软件版本,我们无法删除static.exsample.com上的所有修订资产文件。我们需要保存最近修改过的资产数量。gulp rev过时的过滤器修改的资产,并排除最近要删除的文件的参数化数量。

更多使用文档请点击访问gulp-rev-outdated工具官网

安装

一键安装不多解释

npm install --save-dev gulp-rev-outdated

使用

接受一个参数[keepQuantity]-最近保存的文件数。默认值==2。

var gulp         = require('gulp');
var gutil           = require('gulp-util');
var rimraf          = require('rimraf');
var revOutdated     = require('gulp-rev-outdated');
var path            = require('path');
var through         = require('through2');

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', function() {
    gulp.src( ['dist/js/vendors*.js'], {read: false})
        .pipe( revOutdated(1) ) // 保留1个最新的资产文件 
        .pipe( cleaner() );

    gulp.src( ['dist/js/bundle*.js'], {read: false})
        .pipe( revOutdated(3) ) // 保留3个最近的资产 
        .pipe( cleaner() );

    gulp.src( ['dist/css/*.css'], {read: false})
        .pipe( revOutdated() ) // 保留2个最近的资产(默认值)
        .pipe( cleaner() );

    return;
});

也可以一次传递所有资产文件:

[...]

gulp.task('clean', function() {
    gulp.src( ['dist/**/*.*'], {read: false})
        .pipe( revOutdated(1) ) // 为每个文件名前缀保留1个最新的资产文件。
        .pipe( cleaner() );

    return;
});
 

gulp.src选项read false阻止gulp读取文件的内容并使此任务快得多。如果在同一流中清洗后需要文件及其内容,请不要将read选项设置为false。

posted @ 2020-01-12 10:24  较瘦  阅读(221)  评论(0编辑  收藏  举报
知识点文章整理