前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作
前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作
此文在前两篇基础上对比参考,会很方便理解
gulp.task("delete",function(){
return del("./dist/")
console.log("delete is end");
});
译:删除不需要的
gulp.task("copyHtml",function(){
return gulp.src("./dev/*.html")
.pipe(gulp.dest("./dist/"))
console.log("copyHtml is end");
});
译:拷贝出来html页面到dist下
var concat=require("gulp-concat"); //合并文件(一般只做css的合并,js互相独立的,压缩即可)
gulp.task("concatCss",function(){
console.log("concatCss is starting……")
return gulp.src("./dev/static/css/**/*.css")
.pipe(plumber())
.pipe(concat("all.css"))
.pipe(gulp.dest("./dev/static/css/out/"));
});
译:找到所需要合并的css文件,合并为“all.css”,输出到新的目录
gulp.task("copyCss",function(){
console.log("copyCss is starting……")
return gulp.src("./dev/static/css/out/*.css")
.pipe(gulp.dest("./dist/static/css/out"))
});
译:找到开发环境下“dev”文件下的css,复制到上线环境下"dist"下,一般情况,不需要动dev下的代码
var csso=require("gulp-csso"); //压缩css
gulp.task("csso",function(){
console.log("csso is starting…… ")
return gulp.src(['./dist/static/css/out/*.css'])
.pipe(csso())
.pipe(gulp.dest("./dist/static/css/out"));
});
译:压缩dist下的css
var rev=require("gulp-rev"); //md5时间戳
gulp.task("promd5Css",function(){
console.log("promd5Css is starting……")
return gulp.src(["./dist/static/css/out/*.css"])
.pipe(rev())
.pipe(gulp.dest("./dist/static/css/out/"))
.pipe(rev.manifest())
.pipe(gulp.dest("./dist/static/css/out/"))
});
译:找到dist下的css,编译添加时间戳,输出。再也不需要手动进行修改了
var revCollector=require("gulp-rev-collector"); //做替换的
gulp.task("proCss",function(){
console.log("proCss is starting……")
return gulp.src(["./dist/static/css/out/*.json","./dist/*.html"])
.pipe(revCollector({
replaceReved:true
}))
.pipe(gulp.dest("./dist/"))
});
译:找到对应的映射表和html页面,进行link替换
gulp.task("copyJs",function(){
console.log("copyJs is starting……")
return gulp.src("./dev/static/js/**/*.js")
.pipe(gulp.dest("./dist/static/js"))
});
译:找到开发环境下“dev”文件下的js,复制到上线环境下"dist"下,
var uglify=require("gulp-uglify"); //压缩js
gulp.task("uglifyJs",function(){
console.log("uglifyJs is starting……")
return gulp.src(["./dist/static/js/def/*.js"])
.pipe(uglify())
.pipe(gulp.dest("./dist/static/js/out/"))
});
译:压缩dist下的js
gulp.task("promd5Js",function(){
console.log("promd5Js is starting……")
return gulp.src(["./dist/static/js/out/*.js","!./dist/static/js/out/jquery-1.7.2.min.js"])
.pipe(rev())
.pipe(gulp.dest("./dist/static/js/out/"))
.pipe(rev.manifest())
.pipe(gulp.dest("./dist/static/js/out/"))
});
译:找到dist下的js,编译添加时间戳,输出
gulp.task("proJs",function(){
console.log("proJs is starting……")
return gulp.src(["./dist/static/js/out/*.json","./dist/*.html"])
.pipe(revCollector({
replaceReved:true
}))
.pipe(gulp.dest("./dist/"))
});
译:找到对应的映射表和html页面,进行src替换
var runSequence=require("gulp-run-sequence"); //排序
gulp.task("build",function(){
runSequence("delete","copyHtml","copyCss","csso","promd5Css","proCss","copyJs","uglifyJs","uglifyJs","promd5Js","proJs")
});
按照如上任务名字,进去顺序执行任务
当dos窗口输入:gulp build命令之后
项目文件夹,会生成一个全新的 dist文件夹
包括

如上操作,解决了:
css和js体积过大的导致加载过慢的问题;
都生成了哈希值方式(比如:all-49d50a1512.css),每次修改之后,上线之后,都是全新的链接.
上线的都是静态的html文件,加载速度快
修改公共头部部分,只需要修改一个jade模板,在build一下即可,不依托js库,分分钟可以修改几十个含有共同部分的页面)
解决了之前PC站点,拥有相同导航header的时候,必须依赖js的的窘境
前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作的更多相关文章
- grunt自定义任务——合并压缩css和js
npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...
- gulp压缩css和js
压缩 css 代码可降低 css 文件大小,提高页面打开速度. 规律转换为 gulp 代码 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下.一. ...
- 【转载】Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS
在开发中编写的js.css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担.这就得每次发版本的时候,对js.js进行压缩,然后再发布.有没有什么办法,让代码到了服务器上边,它自己进行压缩 ...
- Maven使用yuicompressor-maven-plugin打包压缩css、js文件
最近项目想使用在maven打包的时间压缩js,css文件,采用yuicompressor-maven-plugin插件进行压缩,但只是压缩减小大小,提高请求速度,并没有对js进行混淆.下面就写一下这个 ...
- 压缩css与js
使用yuicompressor 进行css和js的压缩 #! /bin/sh yasuocss="java -jar /root/yuicompressor-2.4.8.jar --type ...
- 前端自动化之路之gulp,node.js
随着现在前端技术的不断发展,和各个公司对前端项目开发更新速度的要求,前端自动化越来越受到大家的重视,之前传统的前端开发方式已经越来越不能满足开发的需求了,于是各种自动化工具随之产生了.而gulp就是其 ...
- gulp构建前端,压缩css,js文件,实现浏览器自动刷新
一.安装node nodejs下载地址:https://nodejs.org/ nodejs自带npm模块管理器,安装完成之后打开dos命令窗口输入 node -v就能查看nodejs是否安装成成功 ...
- Nginx网络压缩 CSS压缩 图片压缩 JSON压缩
一.序言 使用Nginx作为web应用服务时,会代理如下常见文件:js.css.JSON.图片等,本文提供基于Nginx内置的压缩技术,提供网络请求响应速度的解决方案. 1.网络压缩原理 网络压缩的原 ...
- PHP为前端CSS和JS增加时间戳版本号
一.PHP代码如下: function addVersion($url){ $version = date("Y-m-d H:i:s",filemtime($_SERVER['DO ...
随机推荐
- Backbone简单示例
要的资源: <script type="text/javascript" src="../dep/underscore-1.6.0.min.js"> ...
- Testin云測试破7000万次:崩溃成90%手游应用质量难题
Testin云測试破7000万次:崩溃成90%手游应用质量难题 2014/11/13 · Testin · 业界资讯 11月13日.全球最大的移动游戏.应用真机和用户云測试平台Testin云測宣布,已 ...
- Android学习笔记(27):日历视图Calendar
日历视图CalendarView可用于显示和选择日期. 能够调用setOnDateChangedListener()方法绑定事件监听器. 经常使用XML属性和相关方法: XML属性 相关方法 说明 a ...
- 从0开始做垂直O2O个性化推荐-以58到家美甲为例
从0开始做垂直O2O个性化推荐 上次以58转转为例,介绍了如何从0开始如何做互联网推荐产品(回复"推荐"阅读),58转转的宝贝为闲置物品,品类多种多样,要做统一的宝贝画像比较难,而 ...
- 学习Spring必学的Java基础知识(1)----反射(转)
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...
- angularf封装echarts
前言:angular中快速使用echarts 在html使用ehart很简单,你只需要引入文件和按照官方例子按照对应参数配置和数据填充就Ok了,那么在angular中怎么使用eharts(可以使用ec ...
- Selenium与phantomJS 登入豆瓣 有bug
# -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.keys import Key ...
- Asynchronous vs synchronous client applications(MQTT)
来自我的CSDN博客 想查看英文原文的请点击原文网址.在上两篇翻译中,Homejim我给大家分别翻译了同步客户端应用程序和异步客户端应用程序.本人对这两个的区别也有困惑,因此将paho下的这个比较 ...
- Java之路上,让我们Stand Up Again
在开始之前,先发表一下个人想法吧. 在读书的时候每天忙的不可开交,也就没有了所谓的自由,突然参加工作,传统的朝八晚五,标准的八小时工作制,每天都是两点一线,工作中涉及商业机密,公司的东西也不能带回家, ...
- 添加用户useradd,给用户设置修改密码passwd,修改用户信息usermod,修改用户密码状态chage,删除用户userdel,查询用户及组id,切换用户su,查看当前环境变量env
useradd 用户名 passwd 用户名,给指定用户设密码 passwd给当前用户设密码 添加一个用户系统会自动在以下文件或目录创建对应用户信息: [root@localhost ~]# grep ...