这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法
1 // 引入 gulp及组件
var gulp = require('gulp'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'), //压缩css
jshint = require('gulp-jshint'), //js代码校验
uglify = require('gulp-uglify'), //压缩JS
imagemin = require('gulp-imagemin'), //压缩图片
rename = require('gulp-rename'), //重命名文件
concat = require('gulp-concat'),//文件合并
notify = require('gulp-notify'),//提示信息
cache = require('gulp-cache'),
livereload = require('gulp-livereload'),
del = require('del'),
htmlmin = require('gulp-htmlmin'),//压缩html代码
rev = require('gulp-rev'),//添加时间戳
revCollector = require('gulp-rev-collector');//时间戳添加后再html 里面替换原有的文件
//建立任务: Styles
gulp.task('styles', function() {
return gulp.src('src/styles/*.css')
.pipe(rename({
suffix: '.min'
}))
.pipe(minifycss())
.pipe(rev())
.pipe(gulp.dest('dist/styles'))
.pipe(rev.manifest())
.pipe(gulp.dest('./rev'))
.pipe(notify({
message: 'Styles task complete'
}));
});
  //给css文件后添加时间戳
gulp.task('rev', function() {
gulp.src(['./rev/*.json', './src/*.html'])
//- 读取 rev-manifest.json 文件以及需要进行css名替换的文件
.pipe(revCollector())
//- 执行文件内css名的替换
.pipe(gulp.dest('./'));
//- 替换后的文件输出的目录
});
gulp.task('default', ['styles', 'rev']);
//建立任务: htmlmin
gulp.task('htmlmin', function() {
// src/**/*.html 这个代表的是src下边的html文件以及他的子文件下的所有的html文件
return gulp.src('src/*.html')
.pipe(rename({
suffix: 'min'
}))
.pipe(htmlmin({collapseWhitespace: true}))
.pipe(gulp.dest('dist'))
.pipe(notify({
message: ' task complete'
}));
});
// Scripts
gulp.task('scripts', function() {
return gulp.src('src/scripts/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('main.js'))
.pipe(rename({
suffix: '.min'
}))
.pipe(uglify())
.pipe(gulp.dest('dist/scripts'))
.pipe(notify({
message: 'Scripts task complete'
}));
});
// Images
gulp.task('images', function() {
return gulp.src('src/images/**/*')
.pipe(cache(imagemin({
optimizationLevel: 3,
progressive: true,
interlaced: true
})))
.pipe(gulp.dest('dist/images'))
.pipe(notify({
message: 'Images task complete'
}));
}); // Clean 任务执行前,先清除之前生成的文件
gulp.task('clean', function(cb) {
del(['dist/assets/css', 'dist/assets/js', 'dist/assets/img'], cb)
});
// Default task 设置默认任务
gulp.task('default', ['clean'], function() {
gulp.start('styles', 'scripts', 'images');
});
// 监听文件: Watch
gulp.task('watch', function() {
// 监听html文件变化
gulp.watch('src/*.html', function(){
gulp.run('html');
});
// Watch .scss files
gulp.watch('src/styles/**/*.css', ['styles']);
// Watch .js files
gulp.watch('src/scripts/**/*.js', ['scripts']);
// Watch image files
gulp.watch('src/images/**/*', ['images']);
// Create LiveReload server
livereload.listen();
// Watch any files in dist/, reload on change
gulp.watch(['dist/**']).on('change', livereload.changed);
});

执行添加时间戳

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

gulp给文件后添加md5时间戳的更多相关文章

  1. PyQt5之使用Qt下的designer工具将.ui文件转换成.py文件后添加什么东西后方可运行

    首先证明我是加了那些鬼东西以后可以成功运行的. 然后来叙述一下我的过程. 这是一个.ui文件生成的.py文件.(把主要的内容省去了,但是没有影响结构) # -*- coding: utf-8 -*- ...

  2. 表单多文件上传样式美化 && 支持选中文件后删除相关项

    开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...

  3. gulp自动化打包及静态文件自动添加版本号

    前端自动化打包发布已是一种常态,尤其在移动端,测试过程中静态资源的缓存是件很头疼的事情,有时候明明处理的bug测试还是存在,其实就是缓存惹的祸,手机不比pc浏览器,清理缓存还是有点麻烦的.所以自动化实 ...

  4. 解决:GitHub 远程端添加了 README.md 文件后,本地 push 代码时出现错误

    一.错误描述 To github.com:compassblog/PythonExercise.git ! [rejected] master -> master (fetch first) e ...

  5. 记录一次在 VirtualBox的添加共享windows文件后,发现没有共享文件的事

    在VirtualBox设置完桥接添加ip后,在设备中添加共享windows文件,“e:\work ”,发现共享目录没有文件.使用了各种reboot之后,还是没有发现共享文件夹,重新设置还是不行,用mo ...

  6. .gitignore文件中添加忽略文件或者目录后,不起作用。

    出现该问题的原因: 在git库中已存在了这个文件,之前push提交过该文件. .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了. 解 ...

  7. 添加gitignore文件后使其生效

    https://www.cnblogs.com/AliliWl/p/7880243.html 遇到的问题 我们发现在添加.gitignore文件后,当我们想push文件的时候,我们声明的忽略文件还是会 ...

  8. 为js和css文件自动添加版本号

    web应用必然要面对缓存问题,无论前台后台都会涉足缓存.特别是对于前端而言,缓存利用的是否得当直接关系到应用的性能. 通常情况下,我们会倾向于使用缓存,因为缓存一方面可以减少网络开销,一方面可以减轻服 ...

  9. lr添加md5方法,字符编码转换,urlcode编码化

    1.使得写lr脚本时可调用md5方法,需要进行以下操作: 1)将md5.h文件加载到Extra Files下: 2)在globals.h文件中添加  #include“md5.h” 3).打开md5文 ...

随机推荐

  1. Problem 25

    Problem 25 The Fibonacci sequence is defined by the recurrence relation: Fn = Fn−1 + Fn−2, where F1 ...

  2. eclipse中 使用maven搭建ssh项目 思路复习(含有pom.xml)

    首先在web.xml中配置监听器 在服务器启动的时候 进行bean对象的创建(只会创建单例对象 dao service   多例对象action可不会创建  每个多例对象是不同的 创建了有什么意义呢 ...

  3. foj 2173 floyd+矩阵快速幂

     Problem 2173 Nostop Accept: 52    Submit: 210 Time Limit: 3000 mSec    Memory Limit : 32768 KB  Pro ...

  4. UVA The Tower of Babylon

    The Tower of Babylon Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many det ...

  5. Git的基本设置

    进入虚拟机环境中:首先我们对 Git 进行用户名和邮箱进行设置,请参照下面格式,替换为你自己常用的用户名和邮箱来完成设置: $ git config --global user.name " ...

  6. POJ 1673

    可以证明O是三角形ABC的垂心. 作图辅助线,一个很重要的技巧是延长中线等中线. 可以证明三角形DNA全等于ABC.然后通过角度变换容易证明AQ垂直于BC. #include <iostream ...

  7. 汉澳sinox2014x64server已经能够下载

    大家快去下载,用迅雷快速下载 下载地址 ftp://sinox.3322.org/sinox2014x64server.img 已经能够下载 ftp://sinox.3322.org/sinox201 ...

  8. DIV响应式

    @media only screen and (min-width: 100px) and (max-width: 640px) { div { width: 100px; height: 100px ...

  9. java 源代码的魅力

    学习一种语言: 最快的方法.就是研究其源码. 从源码中可以体会到各种经典的思想! 赞赏一下: 比如: 我们在写一些 冒泡和选择排序的时候用的 交换:     /**      * Swaps x[a] ...

  10. luogu1541 乌龟棋 动态规划

    题目大意 一行格子,每个格子里有数字.一些卡片,卡片上有1.2.3.4这几种数字.一开始你在格子1,随后每次选一个卡片,你可以前进卡片上的数字个格子,得到格子上的分数,然后讲该卡片丢弃.求取卡片的顺序 ...