zoukankan      html  css  js  c++  java
  • gulp-rev-orig

        给客户演示项目时,老是会出现由于缓存,造成的最新的样式或者效果出不来的情况,还得需要手动清除缓存操作,一方面呢,会给客户留下不好的印象,而且也会多了清缓存这一过程,和同事商量过后,决定使用在css或者js后面添加版本号的方法来解决这一问题。

      gulp等构建工具的出现,真的是大大的简化了前端人员的开发工作。在添加版本号这一想法出现后,我就琢磨着gulp的众多插件里面,应该有我可以使用的。于是在https://www.npmjs.com/中搜索到了gulp-rev-orig这一插件,很方便使用,我测试了一下,它可以检索css或者js是否发生变化,从来确定要不要改变后面的版本号。默认格式如下:

      它的使用也非常简单:

    gulp.task('revOrig-default', function(argument) {
        gulp.src('test.html')
            .pipe(revOrig())
            .pipe(gulp.dest('./dist'));
    });

    参数:

    • base      类型: string 默认值:file.cwd    这个参数是用来代替cwd的。基础路径。
    • revType     可取值【hash|date】 默认值:hash
    • dateFormat     类型:string 默认值:'yyyymmddHHMM',当revType设为date的时候起作用
    • hashLength     类型:int 默认值:8 , 当revType为hash的时候起作用,版本值的长度
    • suffix             类型:string 默认值:v,后缀名的key
    • fileTypes        类型: array 默认值:['js','css','img']     要添加版本号的类型
    • elementAttributes       类型:object 默认值:如下
    • transformPath            类型:function 默认值:如下
    • defaultDoAddElementRev    类型:function 默认值:如下
    • elementAttributes.addElementRev   类型:function 默认值:如下
    • createDefaultOptions   类型:function 默认值:如下

    单独说的这个几个会给出例子:

    elementAttributes默认值:

     1 {
     2      js: {
     3          tagRegStr: '(<script [^>]+/?>)',
     4          pathRegStr: '(?:(\s+src=")([^"]+))'
     5     }  ,
     6     css: {
     7         tagRegStr: '(<link [^>]+/?>)',
     8        pathRegStr: '(?:(\s+href=")([^"]+)("))'
     9     },
    10     img: {
    11         tagRegStr: '(<img [^>]+/?>)',
    12         pathRegStr: '(?:(\s+src=")([^"]+)("))'
    13     }
    14 }

    例子:

    gulp.task('revOrig-withElementAttributes', function(argument) {
        gulp.src('test.html')
            .pipe(revOrig({
                fileTypes: ['img1'],
                elementAttributes: {
                    img1: {
                        tagRegStr: '(<img [^>]+/?>)',
                        pathRegStr: '(?:(\s+data-src=")([^"]+)("))'
                    }
                }
            }))
            .pipe(gulp.dest('./dist'));
    });

    输出结果:

    //默认的输出
    <img data-src="assets/audrey-hepburn.jpg" src="assets/audrey-hepburn.jpg?v=6a5f96ce">
    //设置之后的输出结果
    <img data-src="assets/audrey-hepburn.jpg?v=6a5f96ce“ src="assets/audrey-hepburn.jpg">
    //默认值
    function
    (orgPath, rev) { var regStr = '((\?|\&|\&amp\;)' + options.suffix + '=)([^&\s]+)'; var reg = new RegExp(regStr, regOption); var newpath = orgPath; if (reg.test(orgPath)) { newpath = orgPath.replace(reg, '$1' + rev); } else { newpath += ((orgPath.indexOf('?') > -1 ? '&' : '?') + options.suffix + '=' + rev); } return newpath; }

    自定义的时候:

    gulp.task('revOrig-withTransformPath', function(argument) {
        gulp.src('test.html')
            .pipe(revOrig({
                transformPath: function(orgpath, ver) {
                    var newpath = 'http://s1.cdn.com/' + orgpath + (orgpath.indexOf('?') > -1 ? '&' : '?') + 'v=' + ver;
                    return newpath;
                }
            }))
            .pipe(gulp.dest('./dist'));
    });
    //默认输出
    <img data-src="assets/audrey-hepburn.jpg" src="assets/audrey-hepburn.jpg?v=6a5f96ce">
    <img data-src="assets/audrey-hepburn.jpg" src="http://s1.cdn.com/assets/audrey-hepburn.jpg?v=6a5f96ce">
  • 相关阅读:
    JFinal Web开发学习(二)目录、架构、package设计
    JFinal Web开发学习(一)开启HelloWorld
    使用JFinal实现使用MVC获取表单中的数据并将提示信息返回给另一jsp页面。
    [JSOI2010]满汉全席 -- 2-SAT
    [HNOI/AHOI2018] 道路
    ZJOI2006 物流运输
    HNOI2005 狡猾的商人
    打上标记(给树)
    hdu-6201
    Wannfly day2 采蘑菇
  • 原文地址:https://www.cnblogs.com/yanyalun/p/5489463.html
Copyright © 2011-2022 走看看