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']);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM