gulp为css,js添加版本号

gulp为css,js添加版本号

由于cdn缓存,更改样式后会有一段时间不生效,解决方法就是给css,js加上版本号效果如下:

1482360-20190110111252704-417422846.png

1.安装gulp插件
npm install --save-dev gulp-rev (version:9.0.0)
npm install --save-dev gulp-rev-collector (version:1.3.1)
npm install --save-dev run-sequence (version:2.2.1)
2.修改gulpfile.js文件

//引入gulp和gulp插件
var gulp = require('gulp'),
    runSequence = require('run-sequence'),
    rev = require('gulp-rev'),
    revCollector = require('gulp-rev-collector');
    ...

//此处省略sass等配置
...


//定义css、js源文件路径
var cssSrc = 'dist/**/*.css', //dist下css所有文件
    jsSrc = 'dist/**/*.js' ; //dist下所有js文件

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

//JS生成文件hash编码并生成rev-manifest.json文件名对照映射
gulp.task('revJs',function(){
    return gulp.src(jsSrc)
           .pipe(rev())
           .pipe(rev.manifest)
           .pipe(gulp.dest('dist/rev/js'));
})

//Html替换css、js版本
gulp.task('revHtml',function(){
    return gulp.src(['dist/rev/**/*.json','dist/*.html'])
           .pipe(revCollector())
           .pipe(gulp.dest('dist'));
})

//开发构建
gulp.task('dev',function(done){
    condition = false;
    runSequence(
        ['revCss'],
        ['revJs'],
        ['revHtml'],
        done);
})
gulp.task('default',['sass','html','images','watch','scripts','dev']);
3.修改node_module里相关配置文件

(1)更改gulp-rev文件(node_modules--->gulp-rev--->index.js)

将 manifest[originalFile] = revisionedFile;
改为 manifest[originalFile] =  originalFile + '?v=' + file.revHash;

(2)更改gulp-rev-collector(node_modules--->gulp-rev-collector--->index.js)

将 var cleanReplacement = path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' );

改为 var cleanReplacement =  path.basename(json[key]).split('?')[0];

(3)更改rev-path文件(node_module--->gulp-rev--->node_module--->rev-path--->index.js)

将 return modifyFilename(pth, (filename, ext) => `${filename}-${hash}${ext}`);
改为 return modifyFilename(pth, (filename, ext) => `${filename}${ext}`);

(4)更改gulp-rev-collector(node_modules--->gulp-rev-collector--->index.js)

    将  regexp: new RegExp( prefixDelim + pattern, 'g' ),
    改为 regexp: new RegExp( prefixDelim + pattern+'(\\?v=\\w{10})?', 'g' ),

然后在项目目录下执行gulp 即可自动为css,js文件生成版本号

posted @ 2019-01-10 11:25 我在等风也等你啊 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值