/* 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配置的更多相关文章

  1. Scss开发临时学习过程||webpack、npm、gulp配置

    SCSS语法: 假设变量申明带有!default,那么如果在此申明之前没有这个变量的申明,则用这个值,反之如果之前有申明,则用申明的值. ‘...’传递多个参数: @mixin box-shadow( ...

  2. gulp配置文件备份

    /** * Created by leyi on 2016/8/25 0025. */ /*********************package.json依赖模块****************** ...

  3. gulp 配置前端项目打包

    项目发布时,需要对项目js文件进行压缩,混淆,连接等操作以减小项目http请求,加快访问. gulpjs.com中有很多插件可以用来配置打包部署. 需要用的常用插件有: gulp-jsmin  压缩j ...

  4. gulp 配置自动化前端开发

    有的人说,grunt已经廉颇老矣,尚能饭否.gulp已经成为了未来的趋势,或许将撼动grunt的地位. 那么就得看看gulp到底优势在哪里,在我最近的使用中发现,我的到了一个结论:“grunt廉颇老矣 ...

  5. gulp配置版本号 教程之gulp-rev-append

    简介: 使用gulp-rev-append给页面的引用添加版本号,清除页面引用缓存. 1.安装nodejs/全局安装gulp/项目安装gulp/创建package.json和gulpfile.js文件 ...

  6. Express+Less+Gulp配置高效率开发环境

    版权声明:本文由金朝麟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/627049001486519548 来源:腾云阁 h ...

  7. 流行得前端构建工具比较,以及gulp配置

    前端现在三足鼎立的构建工具(不算比较老的ant,yeoman),非fis,grunt,gulp莫属了. fis用起来最简单,我打算自己得项目中使用一下fis. 先说一下gulp安装吧. 第一步:安装n ...

  8. win上gulp配置

    主线: 安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务 1,安装node.js 1.1.说明 ...

  9. gulp配置,实例演示

    项目完成后的目录 我们所需要的插件为:gulp-minify-css gulp-concat gulp-uglify gulp-rename del 如下图所示,完成后的项目目录结构: 附加,获取pa ...

随机推荐

  1. [求助][SPOJ MARIOGAM]-高斯消元(内含标程,数据等)

    小蒟蒻开始做概率的题之后,遇到了这道题,然而,他发现自己的程序调试了无数次也无法通过,系统总是返回令人伤心的WA, 于是,他决定把这一天半的时间收集到的资料放在网上, 寻求大家的帮助, 也可以节省后来 ...

  2. 重磅发布:《阿里巴巴Android开发手册(规约)》

    1.前言 阿里巴巴于近日为广大程序员再送上重磅开春好礼:<阿里巴巴Android开发手册(规约)>.该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者.技术爱好者开放,希 ...

  3. 在Mac下配置Maven环境

    下载Maven安装文件,(http://maven.apache.org/download.html)如:apache-maven-3.5.0-bin.zip,然后解压到本地目录. 打开 .bash_ ...

  4. Egret学习笔记 (Egret打飞机-9.子弹对敌机和主角的碰撞)

    运行起来,虽然主角飞机和敌机都在互相发射子弹,但是子弹打中了就和没打中效果是一样的.. 这一章我们就来处理子弹和飞机的碰撞问题. 我们所有的操作都是基于Main这个容器来做的.所以我就把这个处理放到M ...

  5. react——一个todolist的demo

    代码如下: function ToDoListHeader(props) { return <h1 className={props.className}>ToDoList</h1& ...

  6. 依赖Aspose.Cells Excel 导出

    public static void SaveExcel() { //新建工作簿 Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = ...

  7. 转载微信公众号 测试那点事:Jmeter乱码解决

    原文地址: http://mp.weixin.qq.com/s/4Li5z_-rT0HPPQx9Iyi5UQ  中文乱码一直都是比较让人棘手的问题,我们在使用Jmeter的过程中,也会遇到中文乱码问题 ...

  8. 在Hadoop2.2基础上安装Spark(伪分布式)

    没想到,在我的hadoop2.2.0小集群上上安装传说中的Spark竟然如此顺利,可能是因为和搭建Hadoop时比较像,更多需要学习的地方还是scala编程和RDD机制吧 总之,开个好头 原来的集群: ...

  9. 【前端】Vue2全家桶案例《看漫画》之七、webpack插件开发——自动替换服务器API-URL

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_app_7.html 项目github地址:https://github.com/shamoyuu/ ...

  10. java代码调用使用cxf搭建的webService服务传递对象

    前边成功创建好一个cxf的webServcie服务,并带了一个无参数的方法.现在进一步尝试了使用带参数的方法,分别测了用String为参数和用自定义的对象为参数. 其中,使用String为参数时和不带 ...