gulp改造gulp-rev-append插件实现资源文件链接自动添加MD5版本号

第95节:多模型多卡推理管理 多模型推理:在同一硬件平台上同时部署多个不同或相同的深度学习模型,满足多任务需求。多卡推理:利用多块 GPU 资源,提升推理吞吐量与并发能力。目标:合理分配 GPU 资源,实现高效、低延迟的推理服务。 阅读详情

2016-2-27 gulp自动添加版本号


gulp有很多插件可以实现URL添加MD5版本号,使用gulp-rev和gulp-rev-collector是比较方便的方法,结果如下:

"/css/base.css" => "/dist/css/base-1d87bebe.css"    
"/js/mod.js" => "/dist/mod-61e0be79.js"    
"/images/bg.png"  => "/images/bg-35c3af8134.png"

但是由于公司发布系统限制,如果用上面方法实现,每次更新都会积压过多过期无用的文件,估我们希望的预期效果是:

"/css/base.css" => "/dist/css/base.css?v=1d87bebe"    
"/js/mod.js" => "/dist/mod.js?v=61e0be79"    
"/images/bg.png"  => "/images/bg.png?v=35c3af8134"

因此我们需要对上面的gulp-rev-append插件进行改造。

1.安装Gulp
npm install --save-dev gulp

2.安装gulp-rev-append
npm install --save-dev gulp-rev-append

3.打开node_modules\gulp-rev-append\index.js

  第9行 var FILE_DECL = /(?:href=|src=|url\()['|"]([^\s>"']+?)\?rev=([^\s>"']+?)['|"]/gi;
  更新为: var FILE_DECL = /(?:href=|src=|url\()['|"]([^\s>"']+?)\?v=([^\s>"']+?)['|"]/gi;

4.将html和css中包含url,src等资源链接加上?v=@@hash

5.gulp运行

结果达到预期,如下:

Css

background: url('../img/bg.png?v=28bd4f6d18');

Html

href="css/base.css?v=885e0e1815"
src="js/mod.js?v=10ba7be289"
src="images/bg.png?v=28bd4f6d18"

6.gulpfile.js:

var gulp        = require('gulp');
var htmlmin     = require('gulp-htmlmin'); // 压缩html
var uglify      = require('gulp-uglify'); // 压缩js
var less        = require('gulp-less'); // less编译成css
var gulpConcat  = require('gulp-concat'); // 合并文件
var minifyCss   = require('gulp-minify-css'); // 压缩css
var imagemin    = require('gulp-imagemin'); // 压缩图片
var pngquant    = require('imagemin-pngquant'); // 使用pngquant深度压缩png图片的imagemin插件
var cache       = require('gulp-cache'); // 只压缩修改的图片,没有修改的图片直接从缓存文件读取(C:UsersAdministratorAppDataLocalTempgulp-cache)
var runSequence = require('gulp-run-sequence');
var rev         = require('gulp-rev-append'); // 给URL自动添加MD5版本号
var autoprefixer= require('gulp-autoprefixer');
var del         = require('del');

var htmlSrc     = 'src/html/*.html';
var htmlDest    = 'dist/html';
gulp.task('miniHtml', function() {
    var options = {
        removeComments: true, //清除HTML注释
        collapseWhitespace: true, //压缩HTML
        collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input />
        removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
        removeScriptTypeAttributes: true, //删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes: true, //删除<style>和<link>的type="text/css"
        minifyJS: true, //压缩页面JS
        minifyCSS: true //压缩页面CSS
    };
    return gulp.src(htmlSrc)
        // .pipe(revCollector())
        // .pipe(htmlmin(options))
        .pipe(rev())
        .pipe(gulp.dest(htmlDest));
});

var cssSrc     = 'src/css/*.css';
var cssDest    = './dist/css';
gulp.task('miniCss',function(){
    return gulp.src(cssSrc)
        // .pipe(less())
        .pipe(rev())
        // .pipe(cssmin())
        .pipe(gulp.dest(cssDest));
});

gulp.task('miniJs', function() {
    return gulp.src(['src/js/*/*.js','src/js/*.js'])
    // .pipe(gulpif(
    //   condition, uglify()
    // ))
    // .pipe(rev())
    // .pipe(rev.manifest())
    .pipe(gulp.dest('dist/js'));
});

gulp.task('miniImages', function() {
    gulp.src(['src/images/*/*.{png,jpg,gif,ico}','src/images/*.{png,jpg,gif,ico}'])
        // .pipe(cache(imagemin({
        //     progressive: true,
        //     svgoPlugins: [{
        //         removeViewBox: false
        //     }],
        //     use: [pngquant()]
        // })))
        .pipe(gulp.dest('dist/images'));
});

gulp.task('build', function(done) {
  runSequence(
    ['miniImages'],
    ['miniCss','miniJs'],
    ['miniHtml'],
    done);
});

gulp.task('default', ['build']);

7.结束语
今天的方法是由看到别人通过改造gulp-rev和gulp-rev-collector来实现将MD5版本号收到启发,自己修改gulp-rev-append插件实现同样的效果。但是有一点点很遗憾,对CSS中background:url()的匹配还存在一点点不足,url()必须带单引号或者双引号才能被正确匹配的到,但是CSS的标准写法中,通常不会带单引号或者双引号。只可惜我对正则表达式理解不够,已经提交问题给大神求解了,希望明天有更好的正则表达式可以做到完美匹配。


MDIO接口协议与其详解——单片机 在单片机领域,通过MDIO接口可以与外部设备进行通信,实现对设备的控制和数据的读写。通过本文的介绍,你可以了解到MDIO接口协议的原理和使用方法,并参考源代码示例进行实际的开发和应用。具体的初始化方法与单片机的型号和开发环境有关,可以参考相应的单片机手册和开发工具的文档。(1)发送读取命令:向MDIO线发送读取命令,通常是发送一个特定的控制字节,用于指示要读取的寄存器地址。(1)发送写入命令:向MDIO线发送写入命令,通常是发送一个特定的控制字节,用于指示要写入的寄存器地址。二、MDIO接口协议使用方法。 阅读详情

相关推荐

SolidWorks 2022 学习(一)软件安装

接下来是安装SolidWorks,右键SolidWorks.2022.SP0.Premium.DVD.iso,选择装载。然后以管理员身份运行SolidWorks_Flexnet_Server目录下的server_install.bat。更改需要安装的产品,以及安装路径,并勾选接受条款,点击现在安装,会弹出如下窗口。然后以管理员身份运行setup.exe,开始安装solidworks。下载链接会在文章末尾给出,下载完成的文件如下图所示。双击注册表文件,然后点击确定。保持不动,点击确定,开始安装。

qq_38383364的博客 3129

使用gulp对完成的项目进行最后打包操作 gulp-rev gulp-rev-collector

前言 在一个项目开发完成后,我们需要对代码进行压缩打包,并且将开发环境的代码跟生产环境中的代码区分开。除此之外,还要注意浏览器的缓存问题,如果更改了css文件或者是js文件,浏览器在打开项目的时候依然会先从本地缓存中读取这些外部引用的文件,导致更改的文件没有生效,看不到效果。为了解决这个问题,保证每次更改文件后,浏览器总是能去获取最新的文件,我们可以使用 gulp-rev 和 gulp-rev-c...

蒲公英芽的博客 1883

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

gulp常用插件之gulp-rev-collector(给资源文件加时间戳)

https://www.npmjs.com/package/gulp-rev-collector 这个插件就是从manifests中获取静态资源版本数据, 该数据由不同的流产生, 并且替换html中的链接.安装: $ npm install --save gulp-rev-collector使用: 我们可以使用gulp-rev来产生一些无法使用cache的静态资源, 并且为它们生成manife

hayleyxia的专栏 2万+

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5381

深入解析FDTD Script中的farfieldpolar3d命令:复电场计算与应用

本文深入解析了FDTD仿真中`farfieldpolar3d`命令的核心功能与应用。作为`farfield3d`的复数版本,该命令能计算并返回球坐标系下的复电场矢量,完整保留振幅与相位信息,为光学天线设计、近远场变换及偏振态分析等高级应用提供了关键数据基础。

grafana6viz的博客 286

Gulp在前端的常用操作实例

以前在做代码优化的时候,一般都用一些网上的在线工具来完成,写LESS的时候,一般用Koala来编译,感觉用起来也挺不错的。但是现在构建工具的出现,让以前做的那些繁琐操作变的更方便一些了,我在这里也用构建工具来完成一下我以前一些前端的工作。这里我选用了Gulp来使用。实例概要 代码压缩 CSS自动加前缀 LESS编译 地址版本追加 文件合并 文件修改自动刷新页面 Gulp一些入门知识这里还是说一下Gu

王乐平 技术博客 4494

芯片测试:WAT、CP、FT

最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5086

gulp常见命令

gulp-htmlmin:压缩html文件 gulp-imagemin:压缩图片 imagemin-pngquant:深度压缩png图片 gulp-cache:只压缩修改的图片 gulp-minify-css:压缩CSS文件 gulp-make-css-url-version:给css文件引用文件加版本号(文件MD5) gulp-rev-append:通过正则(?:href|src)=...

_陌默 3194

Qt项目开发实例 (含源码)

qt教程、qt项目、qt下载、qt项目实战、qt多线程。本文通过分析demo源码,QT实战的方式进行学习,学习路线是以实战为目录,全面的使用自己的学习知识,文章中编写一系列的学习游戏demo,与大家一起分享。

啊渊的专栏 14万+

视图库对接系列(GA-T 1400)一、简单介绍

GA/T 1400《公安视频图像信息应用系统》 是我们需要参考看看的相关文档,里面有对应的标准和介绍,没有这个文档的话可以加群找我要。群的话 我放在最下面了。我们先简单想几个问题, 也就是这个协议主要干什么用的,为什么要有, 能做什么。

qq_37716298的博客 4288

gulp-rev-append md5版本号

1、安装gulp npm install gulp --save-dev npm install gulp-rev-append --save-dev 安装完成之后查看package.json文件,如下: 2、编写gulpFile.js文件 1 var gulp = require('gulp'); // 引入文件 2 var rev = require('gulp...

weixin_30772105的博客 127

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

本文将详细介绍如何在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测,并提供实现源码

DT程序员的博客 706

修复BUG:gulp自动添加版本号修复对CSS中background:url()的匹配问题

前天说要找到一个完美的解决方案,今天发动了各路大神,总算是搞定了. 问题描述: 修改gulp-rev-append插件实现自动修改文件中静态资源链接添加md5版本号。但是前天有一点点很遗憾,对CSS中background:url()的匹配还存在一点点不足,url()必须带单引号或者双引号才能被正确匹配的到,但是CSS的标准写法中,通常不会带单引号或者双引号。 ==============

The code world of freedom 2111

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

gulp教程之gulp-rev-append

简介: 使用gulp-rev-append给页面的引用添加版本号,清除页面引用缓存。 1、安装nodejs/全局安装gulp/项目安装gulp/创建package.json和gulpfile.js文件 1.1、gulp基本使用还未掌握?请参看:gulp详细入门教程 1.2、本示例目录结构如下: 2、本地安装gulp-rev-append 2.1、github:h...

dianzongfan5428的博客 226

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

gulp实现监听改变自动刷新页面

gulp的安装和一些基本api我之前已经有文章介绍了,刚好最好在研究将gulp+webpack结合起来,重新回顾了下gulp的一些操作,觉得值得分享 gulp-htmlmin gulp-rev-append gulp-connect gulp-watch gulp-plumber 通俗解释(解释错误可以指出): gulp-htmlmin:压缩html,可以压缩页面javascript、css,去...

飞翔的熊blabla 617

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

gulp入门(15)- gulp-rev-append

插件功能描述使用gulp-rev-append给页面的引用添加版本号,清除页面引用缓存。插件安装$>cnpm install gulp-rev-append --save-dev使用方法gulp-rev-append 插件将通过正则(?:href|src)=”(.)[?]rev=(.)[“]查找并给指定链接填加版本号(默认根据文件MD5生成,因此文件未发生改变,此版本号将不会变)html文件<!do

死牛胖子的技术随笔 819

gulp常见插件总结

gulp-htmlmin:压缩html文件 gulp-imagemin:压缩图片 imagemin-pngquant:深度压缩png图片 gulp-cache:只压缩修改的图片 gulp-minify-css:压缩CSS文件 gulp-make-css-url-version:给css文件引用文件加版本号(文件MD5) gulp-rev-append:通过正则(?:href|src)=...

_陌默 364

gulp配置

/* gulp配置 */ /* gulp配置 */ var gulp = require('gulp'), concat = require('gulp-concat'), rename = require('gulp-rename'), uglify = require('gulp-uglify'), rev = require('gulp-rev-append'...

weixin_30625691的博客 89

angular gulp gulpfile.js

gulp-htmlmin:压缩html文件gulp-imagemin:压缩图片imagemin-pngquant:深度压缩png图片gulp-cache:只压缩修改的图片gulp-minify-css:压缩CSS文件gulp-make-css-url-version:给css文件引用文件加版本号(文件MD5)gulp-rev-append:通过正则(?:href|src)=”(.*)[?]rev=...

小不点的博客 564

使用gulp进行自动在js文件后加版本号,使在更新的时候不必手动清理缓存

原理如果不是第一次访问这个网页,浏览器会留下js或css的缓存,这对开发人员发布新版本系统的时候会起到不利影响, 总会叫用户去清理缓存.解决方案是在js或css文件后面加版本号,如:<script src="src/components/$module.js?v=1.0.0"></script>当浏览器缓存中的文件问号后面的值和发布新系统的值不一样的话, 浏览器会认为他是该文件的某个版本,就会重新加

放开那个桃子的博客 5068

gulp-rev:项目部署缓存解决方案----gulp系列(六)

引言:   前端工程化部署比较重要考虑的一个问题是缓存 ,可以参考 《变态的静态资源缓存与更新》。   使用gulp-rev解决的就是《变态的静态资源缓存与更新》提出的问题。 rev会做什么:   根据静态资源内容,生成md5签名,打包出来的文件名会加上md5签名,同时生成一个json用来保存文件名路径对应关系。      替换html里静态资源的路径为带有md5值的文件路径,这样htm...

weixin_34381666的博客 295

gulp添加版本号?v=

1,说明:使用gulp为js和css静态文件添加版本号,升级服务器代码后,可以不用强制更新浏览器或清空缓存,优化用户体验。 本文主要参考http://www.jb51.net/article/100652.htm, 但是遇到一些小坑,特此记录 2,预期效果:在原目录结构下html文件代码 <link href ="../css/index.css?v=8f204d4"> ...

mentalitys的博客 2678
上一篇: gulp快速入门
下一篇: 修复BUG:gulp自动添加版本号修复对CSS中background:url()的匹配问题
freedom1993
博客等级 码龄12年 25粉丝 57原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值