// 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调用本机应用市场,实现应用评分功能

    原本以为应用评分是个很小的功能,但是一实现才发现真不是个小事.网上搜索资料没有找到答案,在很多开发群里面询问了很多人也没有解决问题,最后分析log,反编译看源码才终于有了些眉目,好吧,上代码: try ...

  2. 1关于script标签属性,注意点,浏览器文档模式,各种数据类型的转化

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 流媒体:V4L2视频获取

    从深圳回来已经20多天了,除了完善毕业设计程序和论文,其他时间都去玩游戏了.真的是最后的一段时间能够无忧无虑在校园里挥霍自己的青春了.今天完成的答辩,比想象的要简单,一直以来想把我现在的这个流媒体的东 ...

  4. Xcode开发和调试总结

    Xcode是iOS开发主要的工具.IDE.关于Xcode的细枝末节,可以参考苹果的官方文档或者众多的说明.此文档主要涉及常用开发和调试注意事项,参考版本为Xcode 5.1.1. 目标设置: 在此,我 ...

  5. 【ios开发】图片拉伸

    最近在做一个项目 其中要自己定制一个View 如图: 但是美工给了我的图片尺寸却是不一样的. 分别是599*80  26*61 于是就成了这样的效果. 很明显的发现取消四周不对劲. 于是我就去找美工姐 ...

  6. ASP.NET MVC 單元測試系列

    ASP.NET MVC 單元測試系列 (7):Visual Studio Unit Test 透過 Visual Studio 裡的整合開發環境 (IDE) 結合單元測試開發是再便利不過的了,在 Vi ...

  7. [转]Mac's and serial TTY's

    Mac's are excellent tools for accessing serial device TTY ports (to console into PBX's, switches, an ...

  8. Build FFmpeg for iOS

    FFmpeg Build Instructions MAC 10.8 or better Copy ffmpeg-2.0.tar.bz2 (https://ffmpeg.org/releases/ff ...

  9. Router

    backbone库学习-Router backbone库的结构http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文的例子来 ...

  10. URLDecoder: Incomplete trailing escape (%) pattern

    在使用URLDecoder对字符串进行解码的时候 报以下异常信息: Exception in thread "main" java.lang.IllegalArgumentExce ...