gulp 插件
原文链接:http://www.mamicode.com/info-detail-517085.html
gulp是什么?
http://gulpjs.com/ 相信你会明白的!
与著名的构建工具grunt相比,有什么优势呢?
- 易于使用,代码优于配置
- 高效,不会产生过多的中间文件,减少I/O压力
- 易于学习,API非常少,你能在很短的事件内学会gulp
那些常用的gulp插件
No.1、run-sequence
Links: https://www.npmjs.com/package/run-sequence
作用:让gulp任务,可以相互独立,解除任务间的依赖,增强task复用
推荐指数:★★★★★
No.2、browser-sync
Links: http://www.browsersync.io/
作用:静态文件服务器,同时也支持浏览器自动刷新
推荐指数:★★★★★
No.3、del
Links:https://www.npmjs.com/package/del
作用:删除文件/文件夹
推荐指数:★★★★★
No.4、gulp-coffee
Links: https://github.com/wearefractal/gulp-coffee
作用:编译coffee代码为Js代码,使用coffeescript必备
推荐指数:★★★★
No.5、coffee-script
Links: https://www.npmjs.com/package/coffee-script
作用:gulpfile默认采用js后缀,如果要使用gulpfile.coffee来编写,那么需要此模块
推荐指数:★★★
No.6、gulp-nodemon
Links: https://www.npmjs.com/package/gulp-nodemon
作用:自动启动/重启你的node程序,开发node服务端程序必备
推荐指数:★★★★★
No.7、yargs
Links: https://www.npmjs.com/package/yargs
作用:用于获取启动参数,针对不同参数,切换任务执行过程时需要
推荐指数:★★★
No.8、gulp-util
Links: https://www.npmjs.com/package/gulp-util
作用:gulp常用的工具库
推荐指数:★★★★★
No.9、gulp-uglify
Links: https://www.npmjs.com/package/gulp-uglify
作用:通过UglifyJS来压缩JS文件
推荐指数:★★★★
No.9、gulp-concat
Links: https://www.npmjs.com/package/gulp-concat
作用:合并JS
推荐指数:★★★★
No.10、gulp-sourcemaps
Links: https://www.npmjs.com/package/gulp-sourcemaps
作用:处理JS时,生成SourceMap
推荐指数:★★★★
No.11、gulp-less
Links:https://www.npmjs.com/package/gulp-less
作用:将less预处理为css
推荐指数:★★★★
No.12、gulp-sass
Links:https://www.npmjs.com/package/gulp-sass
作用:将sass预处理为css
推荐指数:★★★★
No.13、gulp-autoprefixer
Links:https://www.npmjs.com/package/gulp-autoprefixer
作用:使用Autoprefixer来补全浏览器兼容的css。
推荐指数:★★★★
No.14、gulp-minify-css
Links:https://www.npmjs.com/package/gulp-minify-css
作用:压缩css。
推荐指数:★★★★
No.15、connect-history-api-fallback
Links:https://www.npmjs.com/package/connect-history-api-fallback
作用:开发angular应用必须,用于支持HTML5 history API.
推荐指数:★★★
一般的gulpfile文件(采用coffee编写)
首先是,node应用程序:
gulp = require(‘gulp‘)
runSequence = require(‘run-sequence‘)
coffee = require(‘gulp-coffee‘)
gutil = require(‘gulp-util‘)
del = require(‘del‘)
nodemon = require(‘gulp-nodemon‘)
argv = require(‘yargs‘).argv
rename = require(‘gulp-rename‘)
browserSync = require(‘browser-sync‘)
reload = browserSync.reload
# 处理参数
isDebug = not (argv.r || false)
# --入口任务-----------------------------------------------------------------
gulp.task(‘default‘, (callback)->
runSequence(
[‘clean‘]
[‘coffee-server‘, ‘copy-server‘, ‘copy-client‘, ‘coffee-client‘, ‘copy-views‘]
‘serve‘
[‘browserSync‘, ‘watch‘]
callback
)
)
# --构建相关任务---------------------------------------
gulp.task(‘clean‘, (callback)->
del([‘./dist/‘], callback)
)
gulp.task(‘coffee-server‘, ->
gulp.src([
‘./src/**/*.coffee‘
‘!./src/public/**/*.coffee‘
‘!./src/views/**‘
])
.pipe(coffee({bare: true}).on(‘error‘, gutil.log))
.pipe(gulp.dest(‘./dist/‘))
)
gulp.task(‘copy-server‘, ->
gulp.src([
‘./src/config*/*.json‘
‘./src/database*/*.*‘
])
.pipe(gulp.dest(‘./dist/‘))
)
gulp.task(‘copy-client‘, ->
gulp.src([
‘./src/public*/**/*‘
‘!./src/public*/**/*.coffee‘
])
.pipe(gulp.dest(‘./dist/‘))
)
gulp.task(‘coffee-client‘, ->
gulp.src([
‘./src/public*/**/*.coffee‘
])
.pipe(coffee({bare: true}).on(‘error‘, gutil.log))
.pipe(gulp.dest(‘./dist/‘))
)
gulp.task(‘copy-views‘, ->
gulp.src(‘./src/views/**/*.html‘)
.pipe(rename({extname: ‘.vash‘}))
.pipe(gulp.dest(‘./dist/views‘))
)
# --启动程序,打开浏览器任务----------------------------------------------------
nodemon_instance = undefined
gulp.task(‘serve‘, (callback)->
called = false
if not nodemon_instance
nodemon_instance = nodemon({
script: ‘./dist/index.js‘
ext: ‘none‘
})
.on(‘restart‘, ->
console.log(‘restart server......................‘)
)
.on(‘start‘, ->
if not called
called = true
callback()
)
else
nodemon_instance.emit("restart")
callback()
nodemon_instance
)
gulp.task(‘browserSync‘, ->
browserSync({
proxy: ‘localhost:3000‘
port: 8888
#files: [‘./src/public/**/*‘]
open: true
notify: true
reloadDelay: 500 # 延迟刷新
})
)
# --监视任务------------------------------------------------
gulp.task(‘watch‘, ->
gulp.watch([
‘./src/**/*.*‘
‘!./src/**/*.coffee‘
], [‘reload-client‘])
gulp.watch(‘./src/**/*.coffee‘, [‘reload-server‘])
)
gulp.task(‘reload-client‘, (callback) ->
runSequence(
[‘copy-client‘, ‘coffee-client‘, ‘copy-views‘]
‘bs-reload‘
callback
)
)
gulp.task(‘reload-server‘, (callback) ->
runSequence(
[‘copy-server‘, ‘coffee-server‘]
‘serve‘
‘bs-reload‘
callback
)
)
gulp.task(‘bs-reload‘, ->
browserSync.reload()
)
接下来是前端网站:
gulp = require(‘gulp‘)
gutil = require(‘gulp-util‘)
coffee = require(‘gulp-coffee‘)
del = require(‘del‘)
runSequence = require(‘run-sequence‘)
browserSync = require(‘browser-sync‘)
historyApiFallback = require(‘connect-history-api-fallback‘)
# 入口点
gulp.task(‘default‘, ->
runSequence(
[‘clean‘]
[‘copy‘]
[‘serve‘]
)
)
gulp.task(‘copy‘, ->
gulp.src([
‘./src/**/*.*‘
‘!./src/**/*.coffee‘
‘!./src/**/*.less‘
])
.pipe(gulp.dest(‘./dist‘))
)
gulp.task(‘clean‘, (callback)->
del([‘./dist/‘], callback)
)
gulp.task(‘serve‘, ->
browserSync({
server: {
baseDir: "./dist"
middleware: [historyApiFallback]
}
port: 2222
})
)
gulp.task(‘watch‘, ->
# do something...
)
gulp 插件的更多相关文章
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- gulp插件(gulp-jmbuild),用于WEB前端构建
源码地址:https://github.com/jiamao/gulp-jmbuild https://github.com/jiamao/gulp-jmbuild gulp-jmbuild gulp ...
- gulp插件gulp-usemin简单使用
关于什么是gulp,它和grunt有什么区别等问题,这里不做任何介绍.本文主要介绍如何使用gulp-usemin这款插件,同时也会简单介绍本文中用到的一些插件. 什么是gulp-usemin 用来将H ...
- 使用gulp插件来自动刷新页面。
http://itakeo.com/blog/2016/05/19/gulpreload/?none=123 使用gulp插件来自动刷新页面.再也不用修改一次,按一下F5了. 首选通过npm inst ...
- 将less编译成css的gulp插件
简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码, ...
- 如何编写一个gulp插件
很久以前,我们在"细说gulp"随笔中,以压缩JavaScript为例,详细地讲解了如何利用gulp来完成前端自动化. 再来短暂回顾下,当时除了借助gulp之外,我们还利用了第三方 ...
- Gulp 插件及其使用
前端现在有很多的自动打包工具,各有优缺点,而gulp作为其中的一员,也有着很受人们的青睐,简单粗暴,然而gulp本身并没有提供很多的API,真正的一些工作则是靠着插件完成的,本文简单介绍一些常用的gu ...
- gulp插件构建项目 压缩js、css、image、zip、web服务、跨域等插件
推荐一个很好文: https://github.com/lin-xin/blog/issues/2 匹配符 *.**.!.{} gulp.src('./js/*.js') // * 匹配js文件夹下所 ...
- Gulp插件笔记
初次接触Gulp是出于网页模块化的需要,用过之后发现这个任务管理工具有很多实用的插件,意外地好用,于是打算写下这篇笔记把用到的Gulp插件记录一下.至于想了解Gulp基本用法的同学可以去Gulp官网查 ...
随机推荐
- iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ
iOS之在webView中引入本地html,image,js,css文件的方法 2014-12-08 20:00:16CSDN-sky_2016-点击数:10292 项目需求 最近开发的项 ...
- 理解水平扩展和垂直扩展 (转载 http://yunjiechao-163-com.iteye.com/blog/2126981)
当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展.选用哪种策略主要依赖于要解决的问题 以及系统资源的限制.在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点.如果你已经 ...
- NODEJS 在Centos下面的自动启动
直接上代码 #!/bin/sh ## chkconfig: 345 99 10# description: Node.js /home/cekimy/index.js# . /etc/rc.d/ini ...
- 商品条形码(JBarcode)Java版(二)
下午开了一个下午的会议,其实开会我听不进去,因为今天妖都特别冷,下班在公司等待小媳妇一个钟头,然后带着她去吃饭,吃完饭回到家.她做运动,我就开始慢慢整理我自己的小博客. ——题记 先说一下,写这篇文章 ...
- 技巧分享:解决Word 2010当中“分页符”造成的空白行
技巧分享:解决Word 2010当中“分页符”造成的空白行 P1:关于“分页符” 在Word当中插入“分页符”之后,后面的内容就会“更起一段”.就好像“换行符”(回车)会让后面的内容“另起一行”一样. ...
- 关于strlen误用的一点记录
今天帮一个朋友查一个错误,是运行时报vector iterator incompatible,一般这种问题是向量和迭代器的类型不兼容,或者是进行迭代器判等时前后向量的结构发生变化,如erase操作之后 ...
- data([key],[value])
概述 在元素上存放或读取数据,返回jQuery对象. 当参数只有一个key的时候,为读取该jQuery对象对应DOM中存储的key对应的值,值得注意的是,如果浏览器支持HTML5,同样可以读取该DOM ...
- HTML如何让文本两端对齐
<p style="text-align:justify; text-justify:inter-ideograph;>日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹 ...
- 【转载】免费台北.edu教育邮箱及Office 365 Education申请
免费的邮箱非常多,但是免费的.edu教育邮箱却很少有.记得上次不少人寻找.edu教育邮箱还是因为国外一家VPS商家推出的专门针对学生的优惠包,使用.edu教育邮箱就可以获得50美元的优惠,真的很划算. ...
- [已解决] java 增加 ALPN支持
添加javaVM参数: -Xbootclasspath/p:lib/alpn-boot-8.1.10.v20161026.jar 文章来源:http://www.cnblogs.com/gifisan ...