gulp常用插件之rev-del使用

kaosini 2020-01-12

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


rev-del这是一款从模块(如gulp-rev)生成的修订清单中删除旧的、未使用的指纹文件。

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

安装

一键安装不多解释

npm install --save-dev rev-del

使用

revDel({
    oldManifest: 'rev-manifest.json',
    newManifest: { /* 清单 */ },
    suppress: true, 
    deleteMapExtensions: false
}, function (err, filesDeleted) {
    // ...
});

清单可以是对象或文件路径。oldManifest默认为“rev manifest.json”(这是gulp-rev的默认输出),而newManifest没有默认值;它假定您已经将其存储在内存中,因此将其作为对象传递更有效。

如果设置为false,则在ReVestPrime.JSON不存在时会引发错误。通常情况下,您不想更改:通常,第一次运行修订脚本时,清单还不存在。

当设置为true时,deleteMapExtensions将尝试查找gulp-sourcemaps生成的属于旧清单中已更改文件的任何“.map”文件,并将其删除。

rev-del可以与Gulpgulp-rev一起使用。您需要dest在选项或base清单选项中指定-除非您将所有内容都写入根目录。

var gulp = require('gulp');
var rev = require('gulp-rev');
var revDel = require('rev-del');

gulp.task('default', function () {
    return gulp.src('src/*.css')
        .pipe(rev())
        .pipe(gulp.dest('dist'))
        .pipe(rev.manifest())
        .pipe(revDel({ dest: 'dist' }))           // <--
        .pipe(gulp.dest('dist'));
});

如果不使用默认值,则可以为它传递旧清单的名称:

var gulp = require('gulp');
var rev = require('gulp-rev');
var revDel = require('rev-del');

gulp.task('default', function () {
    return gulp.src('src/*.css')
        .pipe(rev())
        .pipe(gulp.dest('dist'))
        .pipe(rev.manifest('my-manifest.json'))
        .pipe(revDel('some-other-manifest.json'))        // <--
        .pipe(gulp.dest('dist'));
});

请注意,如果清单的名称与给定的路径不同,则仅需要更改清单的名称rev.manifest():如果仅更改清单的名称,则rev-del会很好地处理它:

// This works
var gulp = require('gulp');
var rev = require('gulp-rev');
var revDel = require('rev-del');

gulp.task('default', function () {
    return gulp.src('src/*.css')
        .pipe(rev())
        .pipe(gulp.dest('dist'))
        .pipe(rev.manifest('my-manifest.json'))
        .pipe(revDel({ dest: 'dist' }))                          // <--
        .pipe(gulp.dest('dist'));
});

您也可以将指定base为选项之一。同样,如果您已将其交给,则无需执行此操作rev.manifest()

您也可以添加force: true作为选项。这将传递给底层的del插件,该插件接受它以允许在当前工作目录之外进行删除。当您遇到诸如“无法删除当前工作目录之外的文件/文件夹”之类的错误时,这很有用。可以使用该force选项覆盖。”

相关推荐