gulp配置
/* gulp配置 */
/* gulp配置 */
var gulp = require('gulp'),
concat = require('gulp-concat'),
rename = require('gulp-rename'),
uglify = require('gulp-uglify'),
rev = require('gulp-rev-append'), //自动添加版本号
browserSync = require('browser-sync').create(); //热更新 $ cnpm install browser-sync gulp --save-dev
//合并js
gulp.task('testConcat', function() {
gulp.src(['../js/main/*.js', '../js/tools_fun/*.js'])
.pipe(concat('all.js')) //合并后的文件名
.pipe(gulp.dest('../dist/js'));
});
//压缩js文件
gulp.task('jsOnlymin', function() {
gulp.src('../js/*.js')
.pipe(uglify())
.pipe(gulp.dest('../dist/js'));
});
//合并、压缩、并且输出一个新的js文件
gulp.task('jsmin', function() {
gulp.src(['../js/main/*.js', '../js/tools_fun/*.js'])
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(rename({ extname: '.min.js' }))
.pipe(gulp.dest('../dist/js'))
.pipe(browserSync.reload({ stream: true }));
});
//添加版本号
gulp.task('dev', ['jsmin'], function() {
gulp.src('../index.html')
.pipe(rev())
.pipe(gulp.dest('../'))
.pipe(browserSync.reload({ stream: true }));
});
// 热更新: 使用默认任务启动Browsersync,监听JS文件
gulp.task('serve', ['dev'], function() {
gulp.start('dev');
// 从这个项目的根目录启动服务器
browserSync.init({
server: {
baseDir: "../../TOOLS"
}
});
gulp.watch("../js/**/*.js", ['dev']); //监控文件变化,自动更新
});
//默认任务
gulp.task('default', ['serve']);
//使用方法
// 1.自动添加版本号配置:后缀名后面加 [ ?rev=@@hash ];
// gulp-rev-append 插件将通过正则(?:href|src)=”(.*)[?]rev=(.*)[“]查找并给指定链接填加版本号(默认根据文件MD5生成,因此文件未发生改变,此版本号将不会变)
{
/* <img src="img/test.jpg?rev=@@hash" />
<script src="js/all.min.js?rev=@@hash"></script> */
}
gulp配置完整流程版
var gulp = require('gulp'),
concat = require('gulp-concat'),//- 多个文件合并为一个;
cleanCSS = require('gulp-clean-css'),//- 压缩CSS为一行;
ugLify = require('gulp-uglify'),//压缩js
imageMin = require('gulp-imagemin'),//压缩图片
pngquant = require('imagemin-pngquant'), // 深度压缩
htmlMin = require('gulp-htmlmin'),//压缩html
changed = require('gulp-changed'),//检查改变状态
less = require('gulp-less')//压缩合并less
del = require('del')
browserSync = require("browser-sync").create();//浏览器实时刷新
//删除dist下的所有文件
gulp.task('delete',function(cb){
return del(['dist/*','!dist/images'],cb);
})
//压缩html
gulp.task('html', function () {
var options = {
removeComments: true,//清除HTML注释
collapseWhitespace: true,//压缩HTML
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS
};
gulp.src('src/index.html')
.pipe(changed('dist', {hasChanged: changed.compareSha1Digest}))
.pipe(htmlMin(options))
.pipe(gulp.dest('dist'))
.pipe(browserSync.reload({stream:true}));
});
//实时编译less
gulp.task('less', function () {
gulp.src(['./src/less/*.less']) //多个文件以数组形式传入
.pipe(changed('dist/css', {hasChanged: changed.compareSha1Digest}))
.pipe(less())//编译less文件
.pipe(concat('main.css'))//合并之后生成main.css
.pipe(cleanCSS())//压缩新生成的css
.pipe(gulp.dest('dist/css'))//将会在css下生成main.css
.pipe(browserSync.reload({stream:true}));
});
//压缩js
gulp.task("script",function(){
gulp.src(['src/js/jquery-3.1.0.min.js', 'src/js/index.js'])
.pipe(changed('dist/js', {hasChanged: changed.compareSha1Digest}))
.pipe(concat('index.js'))
.pipe(ugLify())
.pipe(gulp.dest('dist/js'))
.pipe(browserSync.reload({stream:true}));
});
// 压缩图片
gulp.task('images', function () {
gulp.src('./src/images/*.*')
.pipe(changed('dist/images', {hasChanged: changed.compareSha1Digest}))
.pipe(imageMin({
progressive: true,// 无损压缩JPG图片
svgoPlugins: [{removeViewBox: false}], // 不移除svg的viewbox属性
use: [pngquant()] // 使用pngquant插件进行深度压缩
}))
.pipe(gulp.dest('dist/images'))
.pipe(browserSync.reload({stream:true}));
});
//启动热更新
gulp.task('serve', ['delete'], function() {
gulp.start('script','less','html');
browserSync.init({
port: 2017,
server: {
baseDir: ['dist']
}
});
gulp.watch('src/js/*.js', ['script']); //监控文件变化,自动更新
gulp.watch('src/less/*.less', ['less']);
gulp.watch('src/*.html', ['html']);
gulp.watch('src/images/*.*', ['images']);
});
gulp.task('default',['serve']);
http://blog.csdn.net/beverley__/article/details/55213235
gulp配置的更多相关文章
- Scss开发临时学习过程||webpack、npm、gulp配置
SCSS语法: 假设变量申明带有!default,那么如果在此申明之前没有这个变量的申明,则用这个值,反之如果之前有申明,则用申明的值. ‘...’传递多个参数: @mixin box-shadow( ...
- gulp配置文件备份
/** * Created by leyi on 2016/8/25 0025. */ /*********************package.json依赖模块****************** ...
- gulp 配置前端项目打包
项目发布时,需要对项目js文件进行压缩,混淆,连接等操作以减小项目http请求,加快访问. gulpjs.com中有很多插件可以用来配置打包部署. 需要用的常用插件有: gulp-jsmin 压缩j ...
- gulp 配置自动化前端开发
有的人说,grunt已经廉颇老矣,尚能饭否.gulp已经成为了未来的趋势,或许将撼动grunt的地位. 那么就得看看gulp到底优势在哪里,在我最近的使用中发现,我的到了一个结论:“grunt廉颇老矣 ...
- gulp配置版本号 教程之gulp-rev-append
简介: 使用gulp-rev-append给页面的引用添加版本号,清除页面引用缓存. 1.安装nodejs/全局安装gulp/项目安装gulp/创建package.json和gulpfile.js文件 ...
- Express+Less+Gulp配置高效率开发环境
版权声明:本文由金朝麟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/627049001486519548 来源:腾云阁 h ...
- 流行得前端构建工具比较,以及gulp配置
前端现在三足鼎立的构建工具(不算比较老的ant,yeoman),非fis,grunt,gulp莫属了. fis用起来最简单,我打算自己得项目中使用一下fis. 先说一下gulp安装吧. 第一步:安装n ...
- win上gulp配置
主线: 安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 1,安装node.js 1.1.说明 ...
- gulp配置,实例演示
项目完成后的目录 我们所需要的插件为:gulp-minify-css gulp-concat gulp-uglify gulp-rename del 如下图所示,完成后的项目目录结构: 附加,获取pa ...
随机推荐
- js使用defineProperty的一些坑
var p2={ }; Object.defineProperty(p2,"gs",{ get:function () { return this.gs; }, set:funct ...
- maven中的传递依赖和传递依赖的解除
例如创建三个maven工程A B C pom文件分别为 A <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns: ...
- MySql全国省市区SQL语句
CREATE TABLE IF NOT EXISTS `province` ( `id` int(11) NOT NULL auto_increment, `provinceID` int(1 ...
- UVALive - 3027 Corporative Network (并查集)
这题比较简单,注意路径压缩即可. AC代码 //#define LOCAL #include <stdio.h> #include <algorithm> using name ...
- UVa230 Borrowers
原题链接 UVa230 思路 这题输入时有一些字符串处理操作,可以利用string的substr()函数和find_last_of()函数更加方便,处理时不必更要把书名和作者对应下来,注意到原题书名的 ...
- nyoj913 取石子(十) SG函数 + Nimm博弈
思路: 第一堆:SG = n % 3; 第二堆:无规律,打表即可,用hash比set快很多; 第三堆:SG = n; 第四堆:无规律 第五堆:SG = n % 2; 第六堆:SG = n % (i + ...
- 洛谷P3381 - 【模板】最小费用最大流
原题链接 题意简述 模板题啦~ 题解 每次都以费用作为边权求一下最短路,然后沿着最短路增广. Code //[模板]最小费用最大流 #include <cstdio> #include & ...
- ActiveMq笔记2-消息持久化
为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB, 无论使用哪种持久化方 ...
- XAF_GS_02_创建第一个XAF项目
上一节我们讲解了如何安装XAF环境,这次我们要开始创建一个自己的XAF项目. Setp 1 第一步打开你的Visual Studio,新建项目,如下图所示,选择DevExpress XAF,选择好你的 ...
- VS2008下QT开发环境搭建(转)
原博文地址:http://blog.csdn.net/sunnyboycao/article/details/6364444 VS2008集成QT4.7.2环境搭建 作者:jimmy 日期:2011- ...