// npm install gulp gulp-sourcemaps gulp-name gulp-notify del --save-dev
// npm install gulp-ruby-sass gulp-autoprefixer gulp-minify-css --save-dev
// npm install jshint gulp-jshint gulp-concat gulp-uglify --save-dev
// npm install gulp-imagemin gulp-cache --save-dev var gulp = require('gulp'), //style
sass = require('gulp-ruby-sass'),//编译sass
autoprefixer = require('gulp-autoprefixer'), //自动添加css前缀
rename = require('gulp-rename'), //重命名
minifycss = require('gulp-minify-css'), //压缩css //js
jshint = require('gulp-jshint'), //js代码校验
concat = require('gulp-concat'), //合并js文件
uglify = require('gulp-uglify'), //压缩js代码 //image
imagemin = require('gulp-imagemin'), //压缩图片
cache = require('gulp-cache'),//图片缓存,只有图片替换了才压缩 //其他
sourcemaps = require('gulp-sourcemaps'),
notify = require('gulp-notify'), //更改提醒
livereload = require('gulp-livereload'), //自动刷新页面
del = require('del') /**
* 样式
* 1、scss编译
* 2、添加css前缀
* 3、压缩css
*/
gulp.task('styles',function(){
return sass('project/scss/**/*.scss', {sourcemap: true,style:'expanded'})
.on('error', sass.logError)
.pipe(sourcemaps.write())
.pipe(autoprefixer({ browsers: ['last 2 versions','safari 5','> 5%','Firefox > 20','ie 6-8','ios 6', 'android 4'] }))
// .pipe(rename({suffix: '.min'}))
// .pipe(minifycss()) //重命名压缩css
.pipe(gulp.dest('project/dist/css'))
// .pipe(notify("styles 编译完成!"));
}); /**
* js
* 1、js代码校验
* 2、合并js
* 3、压缩
*/
gulp.task('scripts', function() {
return gulp.src('project/js/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(sourcemaps.init())
.pipe(concat('main.js')) //合并js生成文件为:main.js
.pipe(sourcemaps.write())
// .pipe(rename({suffix: '.min'}))
// .pipe(uglify()) //重命名压缩js
.pipe(gulp.dest('project/dist/js'))
// .pipe(notify("scripts 编译完成!"));
}); /**
* images
* 1、图像压缩
* 2、图片缓存,只有图片替换了才压缩
*
*/
gulp.task('images',function(){
return gulp.src('project/images/**/*')
.pipe(cache(imagemin({
optimizationLevel: 5, //类型:Number 默认:3 取值范围:0-7(优化等级)
progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染
multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化
})))
.pipe(gulp.dest('project/dist/images'))
// .pipe(notify("images 编译完成!"));
}); // Clean dist的文件
gulp.task('clean', function(cb) {
del(['project/dist/**/*']).then(paths => {
console.log('删除文件列表如下:\n', paths.join('\n'));
});
}); gulp.task('watch',function(){
// 监控style文件
gulp.watch('project/scss/**/*.scss',['styles']);
// 监控script文件
gulp.watch('project/js/**/*.js',['scripts']);
// 监控images文件
gulp.watch('project/images/**/*',['images']); livereload.listen();
gulp.watch(['project/dist/**']).on('change',livereload.changed);
}); gulp.task('default',function(){
gulp.start('styles','scripts','images');
});

参考文章:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/

gulp备忘的更多相关文章

  1. GIS部分理论知识备忘随笔

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...

  2. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

  3. Vi命令备忘

    备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...

  4. ExtJs4常用配置方法备忘

    viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...

  5. [备忘] Automatically reset Windows Update components

    这两天遇到Windows 10的更新问题,官方有一个小工具,可以用来修复Windows Update的问题,备忘如下 https://support.microsoft.com/en-us/kb/97 ...

  6. ECMAScript 5(ES5)中bind方法简介备忘

    一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不 ...

  7. MFC通过txt查找文件并进行复制-备忘

    MFC基于对话框的Demo txt中每行一个23位的卡号. 文件夹中包含以卡号命名的图像文件.(fpt或者bmp文件) 要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来. VC6.0写的. ...

  8. php 相关模块备忘

    在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  9. 『备忘』HttpWebRequest 在 POST 提交时, 标头(Headers)丢失原因

    近来研究 HttpWebRequest —— 辅助类完成时,POST JSON数据 总会 丢失标头(Headers). HttpWebRequest POST JSON数据,分如下几步: > 将 ...

随机推荐

  1. Android在View拉丝工艺和invalidate()和其他相关方法

      转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 . ...

  2. java中数据库通用层

    /** * 数据库通用类 * */ public class ConnDB { /** * 获取数据库连接对象 * @return 数据库连接对象 * */ public static Connect ...

  3. 安装dynamics CRM 2013提示“实例名称必须与计算机名称相同”

    在安装CRM 2013的时候,最后一步一直提示“实例名称必须与计算机名称相同”. 原因是在安装数据库之后,我更改了计算机名称.因此就导致了可这个错. 在安装数据库的时候,数据库会记住计算机的名称,用 ...

  4. D8

    =-=昨天被老师拉去吃点心了就没有发题解...忧伤..昨天的T2貌似都没有调完嗯 今天脑洞是大啊.. T1模拟写挂..呵呵我一面 T2数学题..刚开始只会求素数表的那种方法暴力..不过后面他们都知道一 ...

  5. c# 自定义多选下拉列表2

    以下为工作中遇到的,备注一下 先需要几个辅助类 #region GripBounds using System.Drawing; internal struct GripBounds { ; ; pu ...

  6. GNU Make 学习系列一:怎样写一个简单的Makefile

    编程通常遵循一个相当简单的程序:编辑源文件,编译源代码成可执行的格式,调试结果.尽管将源代码翻译成可执行程序是常规的过程,如果做的不正确,程序员可能会浪费大量的时间去追踪问题.大多数的开发者都经历过这 ...

  7. windows下python的安装

    首先进入python的官方网站:http://www.python.org在下载处,我们找到windows下有两个版本,下载最新版本Python3.4.0

  8. OA小助手

    基于 WPF + Modern UI 的 公司OA小助手 开发总结 前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个阶段的一个反思.人只有在总结的过程中才会 ...

  9. js闭包(转)

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  10. 应用程序入口 WSGIHandler

    Django 源码小剖: 应用程序入口 WSGIHandler WSGI 有三个部分, 分别为服务器(server), 应用程序(application) 和中间件(middleware). 已经知道 ...