zoukankan      html  css  js  c++  java
  • gulp给文件后添加md5时间戳

    这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法
    1
    // 引入 gulp及组件 2 var gulp = require('gulp'), 3 autoprefixer = require('gulp-autoprefixer'), 4 minifycss = require('gulp-minify-css'), //压缩css 5 jshint = require('gulp-jshint'), //js代码校验 6 uglify = require('gulp-uglify'), //压缩JS 7 imagemin = require('gulp-imagemin'), //压缩图片 8 rename = require('gulp-rename'), //重命名文件 9 concat = require('gulp-concat'),//文件合并 10 notify = require('gulp-notify'),//提示信息 11 cache = require('gulp-cache'), 12 livereload = require('gulp-livereload'), 13 del = require('del'), 14 htmlmin = require('gulp-htmlmin'),//压缩html代码 15 rev = require('gulp-rev'),//添加时间戳 16 revCollector = require('gulp-rev-collector');//时间戳添加后再html 里面替换原有的文件 17 //建立任务: Styles 18 gulp.task('styles', function() { 19 return gulp.src('src/styles/*.css') 20 .pipe(rename({ 21 suffix: '.min' 22 })) 23 .pipe(minifycss()) 24 .pipe(rev()) 25 .pipe(gulp.dest('dist/styles')) 26 .pipe(rev.manifest()) 27 .pipe(gulp.dest('./rev')) 28 .pipe(notify({ 29 message: 'Styles task complete' 30 })); 31 });
      //给css文件后添加时间戳
    32 gulp.task('rev', function() { 33 gulp.src(['./rev/*.json', './src/*.html']) 34 //- 读取 rev-manifest.json 文件以及需要进行css名替换的文件 35 .pipe(revCollector()) 36 //- 执行文件内css名的替换 37 .pipe(gulp.dest('./')); 38 //- 替换后的文件输出的目录 39 }); 40 gulp.task('default', ['styles', 'rev']); 41 //建立任务: htmlmin 42 gulp.task('htmlmin', function() { 43 // src/**/*.html 这个代表的是src下边的html文件以及他的子文件下的所有的html文件 44 return gulp.src('src/*.html') 45 .pipe(rename({ 46 suffix: 'min' 47 })) 48 .pipe(htmlmin({collapseWhitespace: true})) 49 .pipe(gulp.dest('dist')) 50 .pipe(notify({ 51 message: ' task complete' 52 })); 53 }); 54 // Scripts 55 gulp.task('scripts', function() { 56 return gulp.src('src/scripts/**/*.js') 57 .pipe(jshint()) 58 .pipe(jshint.reporter('default')) 59 .pipe(concat('main.js')) 60 .pipe(rename({ 61 suffix: '.min' 62 })) 63 .pipe(uglify()) 64 .pipe(gulp.dest('dist/scripts')) 65 .pipe(notify({ 66 message: 'Scripts task complete' 67 })); 68 }); 69 // Images 70 gulp.task('images', function() { 71 return gulp.src('src/images/**/*') 72 .pipe(cache(imagemin({ 73 optimizationLevel: 3, 74 progressive: true, 75 interlaced: true 76 }))) 77 .pipe(gulp.dest('dist/images')) 78 .pipe(notify({ 79 message: 'Images task complete' 80 })); 81 }); 82 83 // Clean 任务执行前,先清除之前生成的文件 84 gulp.task('clean', function(cb) { 85 del(['dist/assets/css', 'dist/assets/js', 'dist/assets/img'], cb) 86 }); 87 // Default task 设置默认任务 88 gulp.task('default', ['clean'], function() { 89 gulp.start('styles', 'scripts', 'images'); 90 }); 91 // 监听文件: Watch 92 gulp.task('watch', function() { 93 // 监听html文件变化 94 gulp.watch('src/*.html', function(){ 95 gulp.run('html'); 96 }); 97 // Watch .scss files 98 gulp.watch('src/styles/**/*.css', ['styles']); 99 // Watch .js files 100 gulp.watch('src/scripts/**/*.js', ['scripts']); 101 // Watch image files 102 gulp.watch('src/images/**/*', ['images']); 103 // Create LiveReload server 104 livereload.listen(); 105 // Watch any files in dist/, reload on change 106 gulp.watch(['dist/**']).on('change', livereload.changed); 107 });

    执行添加时间戳

    gulp styles 

    这局执行后会将所有的css压缩并加上时间戳。

    gulp rev

    这句执行后会将html里面的路径替换成加了时间戳的。

    对比之前的结构 已经在根目录下生成rev这个文件,该文件下 有一个rev-manifest.json文件,我们可以看看该文件的代码如下:

    {
      "gulp.css": "gulp-34f3902a35.css"
    }

     2、对于没有使用css3前缀的可以使用gilp 自动加上前缀,插件是

    gulp-autoprefixer

    3、总结

     需要用到的两个插件

    var rev = require('gulp-rev');//添加时间戳
    var revCollector = require('gulp-rev-collector');//时间戳添加后再html 里面替换原有的文件

    配置文件中这样便携,在平常使用中不执行添加时间戳这个方法,只有在每次项目发布的时候执行这个方法就行

    /***css js 动态添加版本号****/
    gulp.task("cleanTime",function(){
         gulp.src(app.prdPath + 'css/*.css')  //清除发布项目中的原有的css
         .pipe($.clean())
    })
    gulp.task('styles', function() {
        gulp.src(app.devPath + 'css/index.css') //找到要进行添加时间戳的css
        .pipe($.cssmin())      //css压缩
        .pipe(rev())            //css添加时间戳
        .pipe(gulp.dest(app.prdPath + 'css'))  //这行这两行,变会出现配置替换以前css文件的 json 文件
        .pipe(rev.manifest())
        .pipe(gulp.dest('./rev/css'))   //配置文件生成目录
        .pipe($.connect.reload());
    });
    gulp.task("cleanJsTime",function(){
         gulp.src(app.prdPath + 'js/*.js')
         .pipe($.clean())
    })
    gulp.task('jsTimeAdd', function() {
        gulp.src(app.devPath + 'js/index.js')
        .pipe($.uglify())    //压缩js
        .pipe(rev())
        .pipe(gulp.dest(app.prdPath + 'js'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('./rev/js'))
        .pipe($.connect.reload());
    });
    gulp.task('rev', function() {
         gulp.src(['./rev/*.json', './dist/main.html'])                    
         .pipe(revCollector())                                   
         .pipe(gulp.dest('./dist'));                                
    });
    //总的版本号添加
    gulp.task('addTime',['cleanTime', 'styles','cleanJsTime','jsTimeAdd', 'rev']);
  • 相关阅读:
    安装虚拟机及学习linux系统 20155222卢梓杰
    技能获取与编程学习 卢梓杰20155222
    人生第一篇博客
    20155228 2016-2017-2 《Java程序设计》第1周学习总结
    20155228 基于VirtualBox安装Ubuntu和学习linux命令的学习经历和心得
    20155228 获取技能的成功经验和关于C语言学习的调查
    20155228 你期望的师生关系是什么?
    预备作业03:安装虚拟机
    足球运动训练心得及经验分析-c语言学习调查
    我期望的师生关系
  • 原文地址:https://www.cnblogs.com/haonanZhang/p/6382872.html
Copyright © 2011-2022 走看看