gulp 给静态资源文件添加hash(md5)后缀 防止缓存

一、安装需要的包

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


二、配置gulpfile.js

var gulp = require('gulp'),  
    runSequence = require('run-sequence'),  
    rev = require('gulp-rev'),  
    revCollector = require('gulp-rev-collector');  

//CSS生成文件hash编码并生成 rev-manifest.json文件名对照映射  
gulp.task('revCss', function(){  
    return gulp.src('./shalen/css/*.css')  
        .pipe(rev())  
        .pipe(gulp.dest('./yes/css'))  
        .pipe(rev.manifest())  
        .pipe(gulp.dest('./yes/css'));  
});  

//js生成文件hash编码并生成 rev-manifest.json文件名对照映射  
gulp.task('revJs', function(){  
    return gulp.src('./shalen/js/*.js')  
        .pipe(rev())                     //给文件添加hash编码  
        .pipe(gulp.dest('./yes/js'))  
        .pipe(rev.manifest())            //生成rev-mainfest.json文件作为记录  
        .pipe(gulp.dest('./yes/js'));  
});  

//Html替换css、js文件版本  
gulp.task('revHtmlCss', function () {  
    return gulp.src(['./yes/css/*.json', './shalen/zhuye.html'])  
        .pipe(revCollector())             //替换html中对应的记录  
        .pipe(gulp.dest('./yes'));        //输出到该文件夹中  
});  
gulp.task('revHtmlJs', function () {  
    return gulp.src(['./yes/js/*.json', './yes/zhuye.html'])  
        .pipe(revCollector())  
        .pipe(gulp.dest('./yes'));  
}); 

gulp.task('build', function (done) {  
    condition = false;  
    //依次顺序执行  
    runSequence(  
        ['revCss'],  
        ['revHtmlCss'],  
        ['revJs'],  
        ['revHtmlJs'],  
        done);  
});

三、修改node_modules下的插件源码

不修改是这样的:
这里写图片描述

修改插件源码后是这样的:
这里写图片描述

具体修改步骤:

1. 打开 node_modules\gulp-rev\index.js
第144行: manifest[originalFile] = revisionedFile;
修改为: manifest[originalFile] = originalFile + '?v=' +file.revHash;

2. 打开 node_modules\rev-path\index.js
第10行:return filename + '-' + hash + ext;
修改为: return filename + ext;

3. 打开 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];

ok,搞定~!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫老板的豆

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值