【gulp】前端静态资源加MD5或版本号,防止缓存,并替换引用地址

一. 最后实现的效果如下:

<script type="text/javascript" src="resource/js/jquery-3-a46fb81762.3.1.min.js"></script>
<script type="text/javascript" src="resource/js/javascript-a24740cd73.js"></script>
<script type="text/javascript" src="resource/js/detailsPage-7dfc17b306.js"></script>

二.安装

npm install –g gulp 

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')
gulp.task('script',function(){
  gulp.src('resource/js/*.js')
    .pipe(rev())
    .pipe(gulp.dest('./View/resource/js'))
    .pipe(rev.manifest())
    .pipe(gulp.dest('./View/resource/js'));
});
gulp.task('style',function(){
  gulp.src('resource/css/*.css')
    .pipe(rev())
    .pipe(gulp.dest('./View/resource/css'))
	    .pipe(rev.manifest())
    .pipe(gulp.dest('./View/resource/css'));
}); 
gulp.task('revHtmlJs', function () {  
    return gulp.src(['./View/resource/js/*.json', './*.html'])  
        .pipe(revCollector())  
        .pipe(gulp.dest('./dist'));  
});
gulp.task('revHtmlCss', function () {  
    return gulp.src(['./View/resource/css/*.json', './dist/*.html'])  
        .pipe(revCollector())                         //替换html中对应的记录  
        .pipe(gulp.dest('./View'));                     //输出到该文件夹中  
});

//开发构建  
gulp.task('dev', function (done) {  
    condition = true;  
    //依次顺序执行  
    runSequence(  
        ['script'],  
        ['style'],
        ['revHtmlJs'],  
        ['revHtmlCss'], 
        done); 
});

四. 执行gulp dev就可以了


如果想生成加版本号的 例如下面效果:

"/css/style.css" => "/dist/css/style.css?v=1d87bebe"
"/js/script1.js" => "/dist/script1.js?v=61e0be79"
"cdn/image.gif" => "//cdn8.example.dot/img/image.gif?v=35c3af8134"

可修改一下文件:

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

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

2.打开node_modules\gulp-rev\node_modules\rev-path\index.js

10行 return filename + '-' + hash + ext;
更新为: return filename + ext;
3.打开node_modules\gulp-rev-collector\index.js
第40行 var cleanReplacement =  path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' );
更新为 var cleanReplacement =  path.basename(json[key]).split('?')[0];
更改后在执行gulp dev 就可以了!






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mickey_于浩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值