原文链接:http://www.mamicode.com/info-detail-517085.html

gulp是什么?

http://gulpjs.com/ 相信你会明白的!

与著名的构建工具grunt相比,有什么优势呢?

  1. 易于使用,代码优于配置
  2. 高效,不会产生过多的中间文件,减少I/O压力
  3. 易于学习,API非常少,你能在很短的事件内学会gulp

那些常用的gulp插件

No.1、run-sequence

Linkshttps://www.npmjs.com/package/run-sequence

作用:让gulp任务,可以相互独立,解除任务间的依赖,增强task复用

推荐指数:★★★★★

No.2、browser-sync

Linkshttp://www.browsersync.io/

作用:静态文件服务器,同时也支持浏览器自动刷新

推荐指数:★★★★★

No.3、del

Links:https://www.npmjs.com/package/del

作用:删除文件/文件夹

推荐指数:★★★★★

No.4、gulp-coffee

Linkshttps://github.com/wearefractal/gulp-coffee

作用:编译coffee代码为Js代码,使用coffeescript必备

推荐指数:★★★★

No.5、coffee-script

Linkshttps://www.npmjs.com/package/coffee-script

作用:gulpfile默认采用js后缀,如果要使用gulpfile.coffee来编写,那么需要此模块

推荐指数:★★★

No.6、gulp-nodemon

Linkshttps://www.npmjs.com/package/gulp-nodemon

作用:自动启动/重启你的node程序,开发node服务端程序必备

推荐指数:★★★★★

No.7、yargs

Linkshttps://www.npmjs.com/package/yargs

作用:用于获取启动参数,针对不同参数,切换任务执行过程时需要

推荐指数:★★★

No.8、gulp-util

Linkshttps://www.npmjs.com/package/gulp-util

作用:gulp常用的工具库

推荐指数:★★★★★

No.9、gulp-uglify

Linkshttps://www.npmjs.com/package/gulp-uglify

作用:通过UglifyJS来压缩JS文件

推荐指数:★★★★

No.9、gulp-concat

Linkshttps://www.npmjs.com/package/gulp-concat

作用:合并JS

推荐指数:★★★★

No.10、gulp-sourcemaps

Linkshttps://www.npmjs.com/package/gulp-sourcemaps

作用:处理JS时,生成SourceMap

推荐指数:★★★★

No.11、gulp-less

Linkshttps://www.npmjs.com/package/gulp-less

作用:将less预处理为css

推荐指数:★★★★

No.12、gulp-sass

Linkshttps://www.npmjs.com/package/gulp-sass

作用:将sass预处理为css

推荐指数:★★★★

No.13、gulp-autoprefixer

Linkshttps://www.npmjs.com/package/gulp-autoprefixer

作用:使用Autoprefixer来补全浏览器兼容的css。

推荐指数:★★★★

No.14、gulp-minify-css

Linkshttps://www.npmjs.com/package/gulp-minify-css

作用:压缩css。

推荐指数:★★★★

No.15、connect-history-api-fallback

Linkshttps://www.npmjs.com/package/connect-history-api-fallback

作用:开发angular应用必须,用于支持HTML5 history API.

推荐指数:★★★

一般的gulpfile文件(采用coffee编写)

首先是,node应用程序:

  1. gulp = require(‘gulp‘)
  2. runSequence = require(‘run-sequence‘)
  3. coffee = require(‘gulp-coffee‘)
  4. gutil = require(‘gulp-util‘)
  5. del = require(‘del‘)
  6. nodemon = require(‘gulp-nodemon‘)
  7. argv = require(‘yargs‘).argv
  8. rename = require(‘gulp-rename‘)
  9. browserSync = require(‘browser-sync‘)
  10. reload = browserSync.reload
  11. # 处理参数
  12. isDebug = not (argv.r || false)
  13. # --入口任务-----------------------------------------------------------------
  14. gulp.task(‘default‘, (callback)->
  15. runSequence(
  16. [‘clean‘]
  17. [‘coffee-server‘, copy-server‘, copy-client‘, coffee-client‘, copy-views‘]
  18. serve
  19. [‘browserSync‘, watch‘]
  20. callback
  21. )
  22. )
  23. # --构建相关任务---------------------------------------
  24. gulp.task(‘clean‘, (callback)->
  25. del([‘./dist/‘], callback)
  26. )
  27. gulp.task(‘coffee-server‘, ->
  28. gulp.src([
  29. ‘./src/**/*.coffee
  30. ‘!./src/public/**/*.coffee
  31. ‘!./src/views/**‘
  32. ])
  33. .pipe(coffee({bare: true}).on(‘error‘, gutil.log))
  34. .pipe(gulp.dest(‘./dist/‘))
  35. )
  36. gulp.task(‘copy-server‘, ->
  37. gulp.src([
  38. ‘./src/config*/*.json
  39. ‘./src/database*/*.*‘
  40. ])
  41. .pipe(gulp.dest(‘./dist/‘))
  42. )
  43. gulp.task(‘copy-client‘, ->
  44. gulp.src([
  45. ‘./src/public*/**/*‘
  46. ‘!./src/public*/**/*.coffee‘
  47. ])
  48. .pipe(gulp.dest(‘./dist/‘))
  49. )
  50. gulp.task(‘coffee-client‘, ->
  51. gulp.src([
  52. ‘./src/public*/**/*.coffee‘
  53. ])
  54. .pipe(coffee({bare: true}).on(‘error‘, gutil.log))
  55. .pipe(gulp.dest(‘./dist/‘))
  56. )
  57. gulp.task(‘copy-views‘, ->
  58. gulp.src(‘./src/views/**/*.html‘)
  59. .pipe(rename({extname: ‘.vash‘}))
  60. .pipe(gulp.dest(‘./dist/views‘))
  61. )
  62. # --启动程序,打开浏览器任务----------------------------------------------------
  63. nodemon_instance = undefined
  64. gulp.task(‘serve‘, (callback)->
  65. called = false
  66. if not nodemon_instance
  67. nodemon_instance = nodemon({
  68. script: ‘./dist/index.js
  69. ext: none
  70. })
  71. .on(‘restart‘, ->
  72. console.log(‘restart server......................‘)
  73. )
  74. .on(‘start‘, ->
  75. if not called
  76. called = true
  77. callback()
  78. )
  79. else
  80. nodemon_instance.emit("restart")
  81. callback()
  82. nodemon_instance
  83. )
  84. gulp.task(‘browserSync‘, ->
  85. browserSync({
  86. proxy: localhost:3000
  87. port: 8888
  88. #files: [‘./src/public/**/*‘]
  89. open: true
  90. notify: true
  91. reloadDelay: 500 # 延迟刷新
  92. })
  93. )
  94. # --监视任务------------------------------------------------
  95. gulp.task(‘watch‘, ->
  96. gulp.watch([
  97. ‘./src/**/*.*‘
  98. ‘!./src/**/*.coffee
  99. ], [‘reload-client‘])
  100. gulp.watch(‘./src/**/*.coffee‘, [‘reload-server‘])
  101. )
  102. gulp.task(‘reload-client‘, (callback) ->
  103. runSequence(
  104. [‘copy-client‘, coffee-client‘, copy-views‘]
  105. bs-reload
  106. callback
  107. )
  108. )
  109. gulp.task(‘reload-server‘, (callback) ->
  110. runSequence(
  111. [‘copy-server‘, coffee-server‘]
  112. serve
  113. bs-reload
  114. callback
  115. )
  116. )
  117. gulp.task(‘bs-reload‘, ->
  118. browserSync.reload()
  119. )

接下来是前端网站:

  1. gulp = require(‘gulp‘)
  2. gutil = require(‘gulp-util‘)
  3. coffee = require(‘gulp-coffee‘)
  4. del = require(‘del‘)
  5. runSequence = require(‘run-sequence‘)
  6. browserSync = require(‘browser-sync‘)
  7. historyApiFallback = require(‘connect-history-api-fallback‘)
  8. # 入口点
  9. gulp.task(‘default‘, ->
  10. runSequence(
  11. [‘clean‘]
  12. [‘copy‘]
  13. [‘serve‘]
  14. )
  15. )
  16. gulp.task(‘copy‘, ->
  17. gulp.src([
  18. ‘./src/**/*.*‘
  19. ‘!./src/**/*.coffee
  20. ‘!./src/**/*.less
  21. ])
  22. .pipe(gulp.dest(‘./dist‘))
  23. )
  24. gulp.task(‘clean‘, (callback)->
  25. del([‘./dist/‘], callback)
  26. )
  27. gulp.task(‘serve‘, ->
  28. browserSync({
  29. server: {
  30. baseDir: "./dist"
  31. middleware: [historyApiFallback]
  32. }
  33. port: 2222
  34. })
  35. )
  36. gulp.task(‘watch‘, ->
  37. # do something...
  38. )

gulp 插件的更多相关文章

  1. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  2. gulp插件(gulp-jmbuild),用于WEB前端构建

    源码地址:https://github.com/jiamao/gulp-jmbuild https://github.com/jiamao/gulp-jmbuild gulp-jmbuild gulp ...

  3. gulp插件gulp-usemin简单使用

    关于什么是gulp,它和grunt有什么区别等问题,这里不做任何介绍.本文主要介绍如何使用gulp-usemin这款插件,同时也会简单介绍本文中用到的一些插件. 什么是gulp-usemin 用来将H ...

  4. 使用gulp插件来自动刷新页面。

    http://itakeo.com/blog/2016/05/19/gulpreload/?none=123 使用gulp插件来自动刷新页面.再也不用修改一次,按一下F5了. 首选通过npm inst ...

  5. 将less编译成css的gulp插件

    简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码, ...

  6. 如何编写一个gulp插件

    很久以前,我们在"细说gulp"随笔中,以压缩JavaScript为例,详细地讲解了如何利用gulp来完成前端自动化. 再来短暂回顾下,当时除了借助gulp之外,我们还利用了第三方 ...

  7. Gulp 插件及其使用

    前端现在有很多的自动打包工具,各有优缺点,而gulp作为其中的一员,也有着很受人们的青睐,简单粗暴,然而gulp本身并没有提供很多的API,真正的一些工作则是靠着插件完成的,本文简单介绍一些常用的gu ...

  8. gulp插件构建项目 压缩js、css、image、zip、web服务、跨域等插件

    推荐一个很好文: https://github.com/lin-xin/blog/issues/2 匹配符 *.**.!.{} gulp.src('./js/*.js') // * 匹配js文件夹下所 ...

  9. Gulp插件笔记

    初次接触Gulp是出于网页模块化的需要,用过之后发现这个任务管理工具有很多实用的插件,意外地好用,于是打算写下这篇笔记把用到的Gulp插件记录一下.至于想了解Gulp基本用法的同学可以去Gulp官网查 ...

随机推荐

  1. Java注解详解

    Java1.5引入了注解,注解作为程序的元数据嵌入到程序中.注解可以被一些解析工具或者编译工具进行解析.我们也可以声明注解在编译过程或者执行时产生作用. 创建Java自定义注解: package co ...

  2. 00Linux学习及角色定义

    一.嵌入式Linux学习顺序 二.Linux架构 三.Linux工程师角色划分 四. 嵌入式应用工程师工作内容与所需知识点 从图 1可以知道, 嵌入式应用工程师主要从事与产品相关的嵌入式 Linux ...

  3. NDK开发-Android Studio+gradle-experimental开发ndk

    在最新的Android Studio2.2的preview版中,增加全新的ndk支持,使用了新的gradle,以及DSL语言. 新的NDK需要使用新的Gradle插件和新的Android插件来支持! ...

  4. 笔记本中的archlinux调节亮度

    参考了archlinux的wiki:https://wiki.archlinux.org/index.php/Backlight 说一下情况:/sys/class/backlight/acpi_vid ...

  5. 【转载】Spring MVC 整合 Freemarker

    前言 1.为什么要使用Spring MVC呢? 2.为什么要使用Freemarker呢? 3.为什么不使用Struts2呢? 此示例出现的原因就是发现了struts2的性能太差,所以学习Spring ...

  6. mysql中使用 where 1=1和 0=1 的作用

    操作mysql的时候,经常使用where语句进行查询.当where语句不存在的时候,经常在后面加一个where 1=1 where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可 ...

  7. kthread_run【转】

    转自:http://blog.csdn.net/zhangxuechao_/article/details/50876397 头文件 include/linux/kthread.h 创建并启动 /** ...

  8. HDU 2732:Leapin' Lizards(最大流)

    http://acm.hdu.edu.cn/showproblem.php?pid=2732 题意:给出两个地图,蜥蜴从一个柱子跳跃到另外一个地方,那么这个柱子就可能会坍塌,第一个地图是柱子可以容忍跳 ...

  9. oracle迁移postgres之-oracle_fdw

    1. 安装oracle_fdw 在编译安装前,需要设置postgres的环境变量,如在.bash_profile中增加: export ORACLE_HOME=/u01/app/oracle expo ...

  10. IOS OC数据类型

    1.只有浮点型数据除以0.0才能得到+-无穷大的数,而整形或char型数据会得到边界值 2.BOOL的实际类型是signed char,他的底层只占一个字节(只有八位),如果将一个较大的非零整数值赋给 ...