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

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



gulp-rev-collector这是一款根据gulp-rev生成的manifest.json文件中的映射, 去替换文件名称, 也可以替换路径。

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

安装

一键安装不多解释

npm install --save-dev gulp-rev-collector

使用

我们可以使用gulp-rev来缓存破坏多个资产并为其生成清单文件。然后,使用gulp-rev-collector,我们可以从几个清单文件中收集数据,并替换html模板中资产的链接。

例子1:

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

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

gulp.task('scripts', function () {
    return gulp.src('src/js/*.js')
        .pipe(rev())
        .pipe(gulp.dest('dist/js'))
        .pipe( rev.manifest() )
        .pipe( gulp.dest( 'rev/js' ) );
});

...

var revCollector = require('gulp-rev-collector');
var minifyHTML   = require('gulp-minify-html');

gulp.task('rev', function () {
    return gulp.src(['rev/**/*.json', 'templates/**/*.html'])
        .pipe( revCollector({
            replaceReved: true,
            dirReplacements: {
                'css': '/dist/css',
                '/js/': '/dist/js/',
                'cdn/': function(manifest_value) {
                    return '//cdn' + (Math.floor(Math.random() * 9) + 1) + '.' + 'exsample.dot' + '/img/' + manifest_value;
                }
            }
        }) )
        .pipe( minifyHTML({
                empty:true,
                spare:true
            }) )
        .pipe( gulp.dest('dist') );
});

例子2:

gulp.task('scripts5', () => {
  return gulp.src('app/scripts/**/*.js')
    .pipe($.plumber())
    .pipe($.sourcemaps.init())
    .pipe($.babel())
    .pipe($.rev())//- 文件名加MD5后缀
    .pipe($.sourcemaps.write('.'))
    .pipe(gulp.dest('.tmp/scripts'))
    .pipe($.rev.manifest()) //- 生成一个rev-manifest.json
    .pipe(gulp.dest('.tmp/rev/scripts')) //- 将 rev-manifest.json 保存到 rev 目录内
    .pipe(reload({stream: true}));
});

gulp.task('html5', ['styles5', 'scripts5'], () => {
  return gulp.src(['.tmp/rev/**/*.json', 'app/*.html'])//获取rev-manifest.json和要替换的html文件
    .pipe($.revCollector({replaceReved: true}))//根据rev-manifest.json的规则替换html里的路径,由于替换是根据rev-manifest.json规则来的,所以一定要先生成这个文件再进行替换
    .pipe($.useref({searchPath: ['.tmp', 'app', '.']}))
    .pipe($.if('*.js', $.uglify()))
    .pipe($.if('*.css', $.cssnano({safe: true, autoprefixer: false})))
    .pipe($.if('*.html', $.htmlmin({collapseWhitespace: false})))
    .pipe(gulp.dest('dist'));

** Options :**

  • collectedManifest
    类型 : String
    它是json格式为收集和合并清单数据的文件名。
  • replaceReved
    类型 : Boolean
    默认值: false
    您设置一个标记replaceReved,它将替换模板文件中已被替换的链接。
  • dirReplacements
    类型 : Object
    指定目录替换集。gulp-rev创建清单文件,但不包含有关目录的任何信息。例如,如果您使用“上面的例子1”示例中的dirReplacements参数,则会得到下一个替换:
"/css/style.css" => "/dist/css/style-1d87bebe.css"
"/js/script1.js" => "/dist/script1-61e0be79.js"
"cdn/image.gif"  => "//cdn8.example.dot/img/image-35c3af8134.gif"
  • revSuffix
    类型: String
    它是用于定义修订文件后缀的模式。默认值为“-[0-9a-f] {8,10}-?”。在使用gulp-rename的情况下,这是必需的。如果修订的文件名与默认掩码不同。
  • extMap
    类型: Object
    如果您在使用gulp-rev之后使用某些方法修改rev_manifest.json 并得到如下结果:
{
    "assets/less/common.less": "assets/css/common-2c0d21e40c.css"
}

这意味着rev_manifest.json中的键和值具有不同的ext:less&css。
您可以定义扩展区映射规则以正确处理清单文件。
默认值为:

{
    '.scss': '.css',
    '.less': '.css',
    '.jsx': '.js'
}

原文地址:https://www.cnblogs.com/jiaoshou/p/12041352.html

时间: 2024-07-31 20:02:15

gulp常用插件之gulp-rev-collector使用的相关文章

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

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-rewrite这是一款重写对由gulp-rev修订的资产的引用. 更多使用文档请点击访问gulp-rev-rewrite工具官网. 安装 一键安装不多解释 npm install --save-dev gulp-rev-rewrite 使用 最常见的使用模式包括两个步骤: 修改资产并创建资产清单. 从清单中收集修订的路径并重写对它们的引用 const { src, dest, series } = require('gulp

gulp常用插件之rev-del使用

更多gulp常用插件使用请访问:gulp常用插件汇总 rev-del这是一款从模块(如gulp-rev)生成的修订清单中删除旧的.未使用的指纹文件. 更多使用文档请点击访问rev-del工具官网. 安装 一键安装不多解释 npm install --save-dev rev-del 使用 revDel({ oldManifest: 'rev-manifest.json', newManifest: { /* 清单 */ }, suppress: true, deleteMapExtensions

gulp常用插件之gulp-rev-css-url使用

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-css-url这是一款用于在gulp-rev之后覆盖js.css文件中的URL进行替换. 更多使用文档请点击访问gulp-rev-css-url工具官网. 安装 一键安装不多解释 npm install --save-dev gulp-rev-css-url 使用 var gulp=require('gulp'); var rev=require('gulp-rev'); var override=require('gulp

gulp常用插件之gulp-rev-delete-origina使用

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-delete-origina这是一款删除由gulp-rev或 gulp-rev-all重写的原始文件 . 更多使用文档请点击访问gulp-rev-delete-origina工具官网. 安装 一键安装不多解释 npm install --save-dev gulp-rev-delete-origina 使用 var gulp = require('gulp'); var rev = require('gulp-rev');

gulp常用插件之wiredep使用

更多gulp常用插件使用请访问:gulp常用插件汇总 wiredep这是一款gulp插件,能够将js.css文件自动插入到html中. 更多使用文档请点击访问wiredep工具官网. Bower是一个客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源. 详细信息请参考bower官网. 原文地址:https://www.cnblogs.com/jiaoshou/p/12021159.html

gulp常用插件之gulp-plumber使用

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-plumber这是一款防止因gulp插件的错误而导致管道中断,plumber可以阻止 gulp 插件发生错误导致进程退出并输出错误日志. 更多使用文档请点击访问gulp-plumber工具官网. 安装 npm install --save-dev gulp-plumber 使用 var plumber = require('gulp-plumber'); var coffee = require('gulp-coffee'); gu

gulp常用插件之gulp-sourcemaps使用

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-sourcemaps这是一款用来生成映射文件的一个插件,SourceMap 文件记录了一个存储源代码与编译代码对应位置映射的信息文件.我们在调试时都是没办法像调试源码般轻松,这就需要 SourceMap 帮助我们在控制台中转换成源码,从而进行 debug. gulp-sourcemaps在前端的工作中主要是用来解决以下三个方面出现的 debug 问题: 代码压缩混淆后 利用 sass .typeScript 等其他语言编译成 css

gulp常用插件之gulp-useref使用

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-useref这是一款可以将HTML引用的多个CSS和JS合并起来,减小依赖的文件个数,从而减少浏览器发起的请求次数.gulp-useref根据注释将HTML中需要合并压缩的区块找出来,对区块内的所有文件进行合并.注意:它只负责合并,不负责压缩!,如果需要做其他操作,可以配合gulp-if插件使用. 更多使用文档请点击访问gulp-useref工具官网. 安装 一键安装不多解释 npm install --save-dev gulp-

gulp常用插件之gulp-filter使用

更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-filter这是一款可以把stream里的文件根据一定的规则进行筛选过滤. 更多使用文档请点击访问gulp-filter工具官网. 安装 一键安装不多解释 npm install --save-dev gulp-filter 使用 gulp.src中传入匹配符匹配了很多文件,可以把这些文件pipe给gulp-filter做二次筛选.如:gulp.src('**/*.js').pipe($.filter(**/a/*.js)),本来选