zoukankan      html  css  js  c++  java
  • gulp为css,js添加版本号

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

    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文件生成版本号

  • 相关阅读:
    GitLab → 搭建中常遇的问题与日常维护
    GitLab → 搭建私有的版本控制的托管服务平台
    神奇的 SQL 之 ON 和 WHERE → 扑朔迷离,好多细节!
    神奇的 SQL 之 ICP → 索引条件下推
    神奇的 SQL 之 WHERE 条件的提取与应用
    记一次线上问题 → 事务去哪了
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)
    python之pip安装mysql-python失败
    python之celery使用详解(二)
  • 原文地址:https://www.cnblogs.com/yinshiru/p/10248959.html
Copyright © 2011-2022 走看看