1. npm install gulp-htmlmin gulp-imagemin imagemin-pngcrush gulp-minify-css gulp-jshint gulp-uglify gulp-concat gulp-rename gulp-notify --save-dev

gulp配置文件如下

  1. //在你的项目根目录下创建gulpfile.js,代码如下:
  2.  
  3. // 引入 gulp
  4. var gulp = require('gulp');
  5.  
  6. // 引入组件
  7. var htmlmin = require('gulp-htmlmin'), //html压缩
  8. imagemin = require('gulp-imagemin'),//图片压缩
  9. pngcrush = require('imagemin-pngcrush'),
  10. minifycss = require('gulp-minify-css'),//css压缩
  11. jshint = require('gulp-jshint'),//js检测
  12. uglify = require('gulp-uglify'),//js压缩
  13. concat = require('gulp-concat'),//文件合并
  14. rename = require('gulp-rename'),//文件更名
  15. notify = require('gulp-notify');//提示信息
  16.  
  17. // 压缩html
  18. gulp.task('html', function() {
  19. return gulp.src('src/*.html')
  20. .pipe(htmlmin({collapseWhitespace: true}))
  21. .pipe(gulp.dest('./dest'))
  22. .pipe(notify({ message: 'html task ok' }));
  23.  
  24. });
  25.  
  26. // 压缩图片
  27. gulp.task('img', function() {
  28. return gulp.src('src/images/*')
  29. .pipe(imagemin({
  30. progressive: true,
  31. svgoPlugins: [{removeViewBox: false}],
  32. use: [pngcrush()]
  33. }))
  34. .pipe(gulp.dest('./dest/images/'))
  35. .pipe(notify({ message: 'img task ok' }));
  36. });
  37.  
  38. // 合并、压缩、重命名css
  39. gulp.task('css', function() {
  40. return gulp.src('src/css/*.css')
  41. .pipe(concat('main.css'))
  42. .pipe(gulp.dest('dest/css'))
  43. .pipe(rename({ suffix: '.min' }))
  44. .pipe(minifycss())
  45. .pipe(gulp.dest('dest/css'))
  46. .pipe(notify({ message: 'css task ok' }));
  47. });
  48.  
  49. // 检查js
  50. gulp.task('lint', function() {
  51. return gulp.src('src/js/*.js')
  52. .pipe(jshint())
  53. .pipe(jshint.reporter('default'))
  54. .pipe(notify({ message: 'lint task ok' }));
  55. });
  56.  
  57. // 合并、压缩js文件
  58. gulp.task('js', function() {
  59. return gulp.src('src/js/*.js')
  60. .pipe(concat('all.js'))
  61. .pipe(gulp.dest('dest/js'))
  62. .pipe(rename({ suffix: '.min' }))
  63. .pipe(uglify())
  64. .pipe(gulp.dest('dest/js'))
  65. .pipe(notify({ message: 'js task ok' }));
  66. });
  67.  
  68. // 默认任务
  69. gulp.task('default', function(){
  70. gulp.run('img', 'css', 'lint', 'js', 'html');
  71.  
  72. // 监听html文件变化
  73. gulp.watch('src/*.html', function(){
  74. gulp.run('html');
  75. });
  76.  
  77. // Watch .css files
  78. gulp.watch('src/css/*.css', ['css']);
  79.  
  80. // Watch .js files
  81. gulp.watch('src/js/*.js', ['lint', 'js']);
  82.  
  83. // Watch image files
  84. gulp.watch('src/images/*', ['img']);
  85. });

1-1 gulp 实战的更多相关文章

  1. 前端构建大法 Gulp 系列 (四):gulp实战

    前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家 前 ...

  2. Gulp实战和原理解析

    Gulp实战和原理解析(以weui作为项目实例)http://i5ting.github.io/stuq-gulp/

  3. Gulp实战

    推荐文章: gulp.js中文网   :     http://www.gulpjs.com.cn/ DBPOO           :   http://www.dbpoo.com/getting- ...

  4. Gulp实战(二)

    一.配置环境 1.基于NodeJs安装Git,npm,gulp 2.安装各类插件 3.参考文档 http://www.tuicool.com/articles/UbaqyyJ http://www.t ...

  5. 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  6. 前端构建大法 Gulp 系列 (二):为什么选择gulp

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  7. 前端构建大法 Gulp 系列 (一):为什么需要前端构建

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  8. 教你写gulp plugin

    前端开发近两年工程化大幅飙升.随着Nodejs大放异彩,静态文件处理不再需要其他语言辅助.主要的两大工具即为基于文件的grunt,基于流的gulp.简单来说,如果需要的只是文件处理,gulp绝对首选. ...

  9. 前端构建大法 Gulp 系列

    参考: 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp ...

随机推荐

  1. Lookup component 用法

    Lookup component 类似于Tsql的join子句, select a.* ,b.* from dbo.tis a left join dbo. tdes b on a.code=b.co ...

  2. 初学ReactJS,写了一个RadioButtonList组件

     1 <!DOCTYPE html>  2 <html>  3 <head>  4     <title>React Demo</title> ...

  3. webapp应用---cordova.js 3.7.0插件安装总结

    今天是2014年的最后一天,年终总结什么的就不写了.记录一下今天的工作内容.如果不知道phoneGap,那么就不需要往下看了,phoneGap现在已经叫cordova了,叫什么不重要,重要的是它对we ...

  4. swift 如何实现点击view后显示灰色背景

    有这样一种场景,当我们点击view的时候,需要过0.几秒显示一个灰色或者别的颜色的背景 用button来实现,只有按下去的时候才会出现,往往在快速按下,快速抬起的时候是看不出这个变化的 下边是解决方案 ...

  5. objective-c 语法快速过(6)内存管理原理

    内存管理基本原理(最重要) 移动设备的内存极其有限(iphone 4内存512M),每个app所能占用的内存是有限制的(几十兆而已). 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不 ...

  6. JavaScrict中的断言调试

    今天在看忍者秘籍的时候,看到一个断言方法.查阅了一下资料,原来javascript中的console也包含这个方法.具体用法如下: <script type="text/javascr ...

  7. JavaScript(Node.js)+ Selenium自动化测试

    Selenium is a browser automation library. Most often used for testing web-applications, Selenium may ...

  8. angular使用总结

    一.是否有必要加入模块化框架 1.Reqruiejs seajs的主要作用 (1)模块化,让代码易于维护. angular本身就是mvc,模块化很清晰,所以这点用不到requirejs (2)可以按需 ...

  9. SwitchButton 开关按钮 的多种实现方式

    刚开始接触开关样式的按钮是在IOS系统上面,它的切换以及滑动十分帅气,深入人心. 所谓的开关按钮,就是只有2个状态:on和off,下图就是系统IOS 7上开关按钮效果. 起初我在android上我只会 ...

  10. PHP实现实现数字补零格式化

    在接支付SDK的时候,第三方回调处理时需要IP,并且IP的需求是:去掉点号,补零到每地址段3位, 如:192168000001 先看看我的实现: <?php $IP = explode ( '. ...