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


gulp-rev这是一款为静态文件随机添加一串hash值, 解决cdn缓存问题, a.css --> a-d2f3f35d3.css。根据静态资源内容,生成md5签名,打包出来的文件名会加上md5签名,同时生成一个json用来保存文件名路径对应关系。

rev.manifest.json : 生成源文件和添加hash后文件的映射表

gulp-rev插件只能添加后缀, 不能讲html里的路径替换, 如果想要替换路径, 就需要gulp-rev-collector

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

安装

一键安装不多解释

 npm install --save-dev gulp-rev

使用

const gulp = require('gulp');
const rev = require('gulp-rev'); exports.default = () => (
gulp.src('src/*.css')
.pipe(rev())
.pipe(gulp.dest('dist'))
);

API

  • rev() : 给静态文件添加hash后缀
  • rev.manifest(path, options) : 生成文件映射
    • path(对照表文件存放路径):

      类型 : string

      默认值: rev-manifest.json

      对照表文件存放路径。

    • options(选项) :

      类型 : object

      • base

        类型 : string

        默认值: process.cwd()

        覆盖base清单文件的。

      • cwd

        类型:string

        默认值:process.cwd()

        覆盖清单文件的当前工作目录。

      • merge (合并)

        类型:boolean

        默认值:false

        合并现有清单文件。

      • transformer (变压器)

        类型:object

        默认值:JSON

        具有parsestringify方法的对象。这可用于提供自定义转换器,而不是JSON清单文件的默认转换器。

原始路径

原始文件路径存储在 插件源码的 file.revOrigPath。对于重写资产引用之类的事情,这可能会派上用场。

资产哈希

每个修订文件的哈希存储在 插件源码的 file.revHash。您可以将其用于自定义文件重命名或构建不同的清单格式。

资产清单

const gulp = require('gulp');
const rev = require('gulp-rev'); exports.default = () => (
// By default, Gulp would pick `assets/css` as the base,
// so we need to set it explicitly:
gulp.src(['assets/css/*.css', 'assets/js/*.js'], {base: 'assets'})
.pipe(gulp.dest('build/assets')) // 复制原资产build目录
.pipe(rev())
.pipe(gulp.dest('build/assets')) // 写rev的资产build目录
.pipe(rev.manifest())
.pipe(gulp.dest('build/assets')) // 写入清单以build目录
);

将原始路径映射到修订路径的资产清单将写入build/assets/rev-manifest.json

{
"css/unicorn.css": "css/unicorn-d41d8cd98f.css",
"js/unicorn.js": "js/unicorn-273c2c123f.js"
}

默认情况下,rev-manifest.json将被整体替换。要与现有清单合并,merge: true请将和输出目的地(如base)传递至rev.manifest()

const gulp = require('gulp');
const rev = require('gulp-rev'); exports.default = () => (
// By default, Gulp would pick `assets/css` as the base,
// so we need to set it explicitly:
gulp.src(['assets/css/*.css', 'assets/js/*.js'], {base: 'assets'})
.pipe(gulp.dest('build/assets'))
.pipe(rev())
.pipe(gulp.dest('build/assets'))
.pipe(rev.manifest({
base: 'build/assets',
merge: true // 与现有清单合并(如果存在)
}))
.pipe(gulp.dest('build/assets'))
);

您可以选择调用rev.manifest('manifest.json')以为其指定其他路径或文件名。

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

  1. 精通gulp常用插件

    本文主要展示的是gulp常用插件的使用方法和用途,通过对插件的熟练运用达到精通gulp.不定期更新.可以到github上面下载DEMO. github地址:lin-xin/gulp-plugins 匹 ...

  2. gulp常用插件之gulp-rev-format使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-format这是一款提供静态资产的哈希格式选项(前缀,后缀,最后扩展名). 更多使用文档请点击访问gulp-rev-format ...

  3. gulp常用插件之rev-del使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 rev-del这是一款从模块(如gulp-rev)生成的修订清单中删除旧的.未使用的指纹文件. 更多使用文档请点击访问rev-del工具官网. 安 ...

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

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-delete-origina这是一款删除由gulp-rev或 gulp-rev-all重写的原始文件 . 更多使用文档请点击访问 ...

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

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-outdated这是一款旧的静态资产修订文件过滤器. 我们可以使用gulp rev来缓存一些资产.源文件的每次修改都会导致新的修 ...

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

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-css-url这是一款用于在gulp-rev之后覆盖js.css文件中的URL进行替换. 更多使用文档请点击访问gulp-rev ...

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

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-rewrite这是一款重写对由gulp-rev修订的资产的引用. 更多使用文档请点击访问gulp-rev-rewrite工具官网 ...

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

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-collector这是一款根据gulp-rev生成的manifest.json文件中的映射, 去替换文件名称, 也可以替换路径. ...

  9. node和gulp实现前端工程自动化(附:gulp常用插件)

    /** * 1. LESS编译 压缩 合并 * 2. JS合并 压缩 混淆 * 3. img复制 * 4. html压缩 */ // 在gulpfile中先载入gulp包,因为这个包提供了一些APIv ...

随机推荐

  1. djiango 配置文件(setings)

    """ Django settings for ORM project. Generated by 'django-admin startproject' using D ...

  2. Go语言实现:【剑指offer】二叉搜索树的后序遍历序列

    该题目来源于牛客网<剑指offer>专题. 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. Go ...

  3. 前端jQuery日历控件报错 $("#datepicker").datepicker is not a function

    使用日历控件时,前端产生错误: $("#datepicker").datepicker is not a function 问题原因 前端在同一个页面,jQuery引入了两次. 解 ...

  4. android 基础学习笔记2

    1.容器布局 一.线性布局 (LineaLayout) 方向:orientation =vertical / horizontal 重力(对齐) :gravity =bottom/right/left ...

  5. 浅谈Go语言的Goroutine和协程

    0x00.前言 前面写了一篇初识Go语言和大家一起学习了Go语言的巨大潜力.语言简史.杀手锏特性等,感兴趣的读者可以回顾一下. 今天来学习Go语言的Goroutine机制,这也可能是Go语言最为吸引人 ...

  6. CentOS 6.4安装mongo的php扩展包

    最近安装mongo相关内容,因mongodb下载好解压即可使用,在这里我就不多说了,这里我分享下如何安装mongo的php扩展 首先下载扩展包https://github.com/mongodb/mo ...

  7. php面试笔记(4)-php基础知识-流程控制

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而流程控制相关的 ...

  8. lwip eth插拔网线自动维护接口状态

    硬件连线就是将dp83848的INT脚连到STM32的某个中断脚上,这里是PB14 PB14的中断处理函数中,会释放一个信号量,这里只是发生链路状态改变中断(网线插上或拔下) void EXTI15_ ...

  9. k8s系列---dns部署

    1:首先创建kube-dns和dnsmasq这两个yaml,然后生成相应的pod.svc等. 2:然后在去创建其他的验证pod和svc 3:验证nslookup解析的是其他pod的svc的name,而 ...

  10. MSFVENOM SHELLCODE生成备忘录

    MSFVENOM SHELLCODE生成 通用Shellcode msfvenom -a x86 --platform windows -p windows/shell_reverse_tcp LHO ...