gulp给文件后添加md5时间戳
这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法
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 自动加上前缀,插件是
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时间戳的更多相关文章
- PyQt5之使用Qt下的designer工具将.ui文件转换成.py文件后添加什么东西后方可运行
首先证明我是加了那些鬼东西以后可以成功运行的. 然后来叙述一下我的过程. 这是一个.ui文件生成的.py文件.(把主要的内容省去了,但是没有影响结构) # -*- coding: utf-8 -*- ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
- gulp自动化打包及静态文件自动添加版本号
前端自动化打包发布已是一种常态,尤其在移动端,测试过程中静态资源的缓存是件很头疼的事情,有时候明明处理的bug测试还是存在,其实就是缓存惹的祸,手机不比pc浏览器,清理缓存还是有点麻烦的.所以自动化实 ...
- 解决:GitHub 远程端添加了 README.md 文件后,本地 push 代码时出现错误
一.错误描述 To github.com:compassblog/PythonExercise.git ! [rejected] master -> master (fetch first) e ...
- 记录一次在 VirtualBox的添加共享windows文件后,发现没有共享文件的事
在VirtualBox设置完桥接添加ip后,在设备中添加共享windows文件,“e:\work ”,发现共享目录没有文件.使用了各种reboot之后,还是没有发现共享文件夹,重新设置还是不行,用mo ...
- .gitignore文件中添加忽略文件或者目录后,不起作用。
出现该问题的原因: 在git库中已存在了这个文件,之前push提交过该文件. .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了. 解 ...
- 添加gitignore文件后使其生效
https://www.cnblogs.com/AliliWl/p/7880243.html 遇到的问题 我们发现在添加.gitignore文件后,当我们想push文件的时候,我们声明的忽略文件还是会 ...
- 为js和css文件自动添加版本号
web应用必然要面对缓存问题,无论前台后台都会涉足缓存.特别是对于前端而言,缓存利用的是否得当直接关系到应用的性能. 通常情况下,我们会倾向于使用缓存,因为缓存一方面可以减少网络开销,一方面可以减轻服 ...
- lr添加md5方法,字符编码转换,urlcode编码化
1.使得写lr脚本时可调用md5方法,需要进行以下操作: 1)将md5.h文件加载到Extra Files下: 2)在globals.h文件中添加 #include“md5.h” 3).打开md5文 ...
随机推荐
- python笔记之json报错
写爬虫的过程中不免遇到处理json数据的情况,今天在爬取新华网新闻数据时发现使用json.loads函数时报错: json.decoder.JSONDecodeError: Expecting val ...
- linux下的mongodb数据库原生操作
mongodb,是一种结构最像mysql的nosql mysql中的数据库,mongodb中也有,区别在于, myql中数据库下的是表,字段和数据的形式存在 mongodb数据库下的是叫集合(和pyt ...
- Zookeeper-单机/集群安装
简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少量信息.Hadoo ...
- Syncfusion在WinPhone8.1实现统计图
using Syncfusion.UI.Xaml.Charts; public static SfChart InitCompareChart(string fundName, double tenT ...
- Spring Boot 定时任务单线程和多线程
Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task; import java.text.SimpleDat ...
- Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft.Build.En
错误具体信息: Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft. ...
- Codeforces Round #349 (Div. 2) C. Reberland Linguistics DP+set
C. Reberland Linguistics First-rate specialists graduate from Berland State Institute of Peace a ...
- Android ADB 常用命令
Android ADB 常用命令 泛原罪 2016.09.21 00:02* 字数 605 阅读 2912评论 0喜欢 1 [TOC] adb logcat 查看日志 详细内容可参见 ADB Usag ...
- bzoj2958: 序列染色(DP)
2958: 序列染色 题目:传送门 题解: 大难题啊(还是我太菜了) %一发大佬QTT 代码: #include<cstdio> #include<cstring> #incl ...
- LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
Hiding Gold Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Submit Sta ...