问题:

当我们修改js和css文件时往往需要清除浏览器的缓存,否则有些效果就看不到更新过后的。

通过对js,css文件内容进行hash运算,生成一个文件的唯一hash字符串(如果文件修改则hash号会发生变化)

替换html中的js,css文件名,生成一个带版本号的文件名,这样加版本号的静态文件就不会存在缓存的问题了。

解决:

我的当前版本

     "gulp-rev": "7.1.2",
"gulp-rev-collector": "1.2.4",
"rev-path": "^2.0.0",

gulp有自动化添加版本hash的插件gulp-rev,它的效果是更改文件名,如下

     <link rel="stylesheet" href="./css/jquery.e-calendar-de29b48f93.css">
<link rel="stylesheet" href="./css/base-8688d776d1.css">
<link rel="stylesheet" href="./css/style-93423ee3ca.css">

gulp直接更改了文件名,而我们想要的效果则是下面这种添加版本号。

     <link rel="stylesheet" href="./css/jquery.e-calendar.css?v=de29b48f93">
<link rel="stylesheet" href="./css/base.css?v=8688d776d1">
<link rel="stylesheet" href="./css/style.css?v=93423ee3ca">

所以我们需要更改一下gulp的文件,更改gulp-rev和gulp-rev-collector

打开node_modules\gulp-rev\index.js

第144行 manifest[originalFile] = revisionedFile;
更新为:
manifest[originalFile] = originalFile + '?v=' + file.revHash;

打开nodemodules\gulp-rev\nodemodules\rev-path\index.js

第9行 return modifyFilename(pth, (filename, ext) => `${filename}-${hash}${ext}`);
更新为:return modifyFilename(pth, (filename, ext) => `${filename}${ext}`);

打开node_modules\gulp-rev-collector\index.js

 第40行 let cleanReplacement =  path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' );
修改为:
let cleanReplacement = path.basename(json[key]).split('?')[0];

再执行gulp命令,得到的结果如下(效果正确):

<link rel="stylesheet" href="../css/default.css?v=803a7fe4ae">
<script src="../js/app.js?v=3a0d844594"></script>

gulp自动化添加版本号并修改为参数格式的更多相关文章

  1. 前端静态资源版本更新与缓存之——gulp自动化添加版本号

    公司项目每次发布后,偶尔会有缓存问题,然后看了下gulp,发现gulp还能给js,css自动化添加版本号,可解决缓存的问题,所以自动化实现静态资源的版本更新才是正道.通过网上的资料试过了两种办法: 1 ...

  2. Gulp自动添加版本号(转载)

    本文转载自: gulp自动添加版本号

  3. 前端自动化工具gulp自动添加版本号

    之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...

  4. gulp批量添加版本号

    要实现的理想效果: "/css/style.css" => "/dist/css/style.css?v=1d87bebe""/js/scrip ...

  5. gulp 自动添加版本号

    本文介绍利用 gulp-rev 和 gulp-rev-collector 进行版本管理 npm官网介绍使用后的效果如下: "/css/style.css" => " ...

  6. Gulp自动添加版本号

    推荐使用gulp-rev + gulp-rev-collector是比较方便的方法,结果如下: "/css/style.css" => "/dist/css/sty ...

  7. gulp自动添加版本号过程中的一些要点记录

    1.打开node_modules\gulp-rev\index.js 第144行 manifest[originalFile] = revisionedFile; 更新为: manifest[orig ...

  8. 使用gulp添加版本号

    由于js和css的缓存问题,所以,希望在html上给js和css添加上版本号. 常见的用法是使用gulp-rev和gulp-rev-collector进行操作.使用这两个插件,得到的效果如下图所示: ...

  9. gulp自动化打包及静态文件自动添加版本号

    前端自动化打包发布已是一种常态,尤其在移动端,测试过程中静态资源的缓存是件很头疼的事情,有时候明明处理的bug测试还是存在,其实就是缓存惹的祸,手机不比pc浏览器,清理缓存还是有点麻烦的.所以自动化实 ...

随机推荐

  1. CGridCtrl显示图片

  2. Neo4j--UNIQUE约束

    UNIQUE简介 和关系型数据库一样,对数据进行约束作用. 比如在某个属性上不能插入重复的节点. 比如属性的完整性约束. 创建UNIQUE约束 创建UNIQUE语法 CREATE CONSTRAINT ...

  3. 阿里巴巴技术总监全解中台架构19页ppt

    //初创时,快速上线 单体架构至少撑了3年 //分布式,中间件基座 //平台化,内部是简单服务,对于业务侧就是快速上线 //平台化之后由于多平台协作问题,再次出现问题: 效率仍然不能匹配业务发展之需要 ...

  4. HTML笔记及案例

    - 了解什么是标记语言 - 了解HTML主要特性,主要变化以及发展趋势 - 了解HTML的结构标签 - 掌握HTML的主要标签(字体,图片,列表,链接,表单等标签) ### 1.网站信息页面 #### ...

  5. jsp页面引入不了js路径没错

    最近搞开发,发现有个jsp页面引入不了js:很是神奇,路径什么的都没问题,同事的浏览器可以加载该js,发现放到其他的文件夹下可以加载该js:当时没研究出来,任务紧就没研究了. 最近闲下来了,有去研究, ...

  6. QSignalMapper is deprecated

    今天参考 qt4 的书籍,在 qt5 的平台上面,用了 QSignalMapper,结果收到警告" QSignalMapper is deprecated". 经过一番查找,找到了 ...

  7. c# 数据库操作,多数据库操作、数据库操作异常报错等问题

    1.引入相关的命名空间 在C#中要操作数据库,一般情况需要引入两个命名空间,在三种连接模式中都要引入下面的命名空间: System.Data;描述与数据源连接的当前状态. // // 摘要: // 连 ...

  8. k8认证机制

    参考下面博文 http://www.mamicode.com/info-detail-2270627.html 需要补充: k8s的的认证机制场景使用 客户端证书认证         采用双向证书进行 ...

  9. DRF项目之JWT认证方式的简介及使用

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  10. 监听配置问题,SID与Service_Name区别

    监听配置问题,SID与Service_Name区别 1.数据库实例名SID 概念:数据库实例名用于和操作系统进行联系的标识,是数据库和操作系统之间的交互用的书数据库实例名.实例名也被写入参数文件中,该 ...