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 ...
随机推荐
- 拥抱.NET Core系列:MemoryCache 初识
Cache是一个绝大多数项目会用到的一个技术,说起到缓存可能就联想到 Set.Add.Get.Remove.Clear 这几个方法.那么在.NET Core中微软给我们带来了什么样的缓存体验呢?今天我 ...
- 基于Ado.Net的日志组件
软件开发,离不开对日志的操作,它可以帮助我们查找和检测问题.好的日志组件可以对于整个系统来说,至关重要 在NaviSoft产品中,日志组件也占有非常重要的份量.如下图所示,是组件的Db表结构设计 图- ...
- Go语言学习_Win10下安装Go开发环境
关于Go语言有多么值得学习,这里就不做介绍了,既然看了这篇文章,想必是对有学习意向. 这里是在Windows下安装Go环境,去中文社区的下载栏目,https://studygolang.com/dl ...
- 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)
一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...
- haproxy配置文件详解和ACL功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- 【天坑】ASP.net WebAPI跨域调用问题
最近在做一个项目,前端是VUE,后端是WebAPI,业务也就是一些实体的增删改查.在项目开始的时候我就预计到有跨域的问题,所以也找了一下资料,在Web.Config里面加上了配置信息: <htt ...
- 使用TensorFlow的卷积神经网络识别自己的单个手写数字,填坑总结
折腾了几天,爬了大大小小若干的坑,特记录如下.代码在最后面. 环境: Python3.6.4 + TensorFlow 1.5.1 + Win7 64位 + I5 3570 CPU 方法: 先用MNI ...
- Zookeeper笔记3——原理及其安装使用
Zookeeper到底能干什么? 1.配置管理:这个好理解.分布式系统都有好多机器,Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣 ...
- SpringCloud @FeignClient的类注解@ReqestMapping无效报错:No message available","path":"/xxxx
最近在使用Feign组合微服务的时候发现在@FeignClient接口类上使用@ReqestMapping无效. 像下面的这个代码: @FeignClient("xxx") @Re ...
- hive:框架理解
1. 什么是hive •Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. •本质是将HQL转换为MapReduce程序 2. 为什么 ...