gulp插件实战

自从开始做 angularJS 项目以来,对gulp使用变得十分频繁。实际的开发体验就是非常方便,构建代码,本地调试变得十分快捷。看了一下 packjson 将近十种插件。使用的过程中有很多坑,在此写下来,为了以后少踩坑。

1.什么是gulp?

gulp是目前最火的前端构建工具之一,在 npm 上也是最火的工具之一。它的出现让前端开发变得十分方便。它和 webpack 不太一样,它属于流式处理文件,简单清晰。配置文件也是十分简单,webpack 的配置文件,大家看的往往会头疼。
安装 gulp 十分简单。
npm install gulp -g

2. 5个主要的API

  • gulp.task()
    task,顾名思义,就是新建一个 gulp 任务。使用的话直接
    gulp.task('任务名',function(){ ...... })
    执行任务使用 gulp 任务名 即可
  • gulp.src()
    可以理解为读取文件,和 webpack entry类似。
  • gulp.watch()
    监视文件,熟悉命令行的朋友应该不会陌生,很多指令都有 -w的命令。
  • gup.dest()
    处理过后的文件放在哪,是这个 api 决定的。
  • gulp.pipe()
    处理过程,每一个步处理都通过这个 api 处理,一步一步向下走。

3. 常用的 gulp 插件

(1). gulp-usemin
  //合并插件

现在文件中注释,然后直接使用即可。

(2). gulp-load-plugins

顾名思义就是一个快速加载 gulp 插件的插件。
$ = require('gulp-load-plugins')();
别忘后边的括号!
$.usemin()
像这样不用require插件,直接使用即可。

(3).gulp-connect

快速创建一个本地服务器
gulp.task('server', function () { $.connect.server({ root: './build/', port: 9003, livereload: false, });
指定根目录,端口,实时重载即可。

(4).gulp-plumber

任务出错不中断插件,让你不用一直重启项目。很实用!

(5). wrench

按理说不属于 gulp 插件,但是配合 gulp 使用,可以把所有的 gulp 任务全部独立出来,方便项目管理和查错。
使用比较简单
gulpfile.jswrench = require('wrench');
wrench.readdirSyncRecursive('./gulp').filter(function (file) { return (/\.(js)$/i).test(file); }).map(function (file) { require('./gulp/' + file); });


入口为你的所有 gulp 任务文件夹即可

(6). gulp-rev、gulp-rev-collector

添加版本号的插件,在文件尾部添加哈希值,防止缓存。同时它会生成一个映射表。
gulp.task('revCSS', () => { return gulp.src('./dev/css/*.css') .pipe($.rev()) .pipe(gulp.dest('./build/css')) .pipe($.rev.manifest()) .pipe(gulp.dest('./rev/css')); });
gulp.task('revJS', () => { return gulp.src(['./dev/js/app.js', './dev/js/base.js', './dev/js/vendors.js']) .pipe($.rev()) .pipe(gulp.dest('./build/js')) .pipe($.rev.manifest()) .pipe(gulp.dest('./rev/js')); });

gulp.task('revCollectorHtml', () => { return gulp.src(['./rev/**/*.json', './dev/index.html']) .pipe($.revCollector()) .pipe(gulp.dest('./build')); });

(7). run-sequence

runSequence = require('run-sequence');
同样,这也不算一个 gulp插件,但是配合 gulp 使用可以把一些任务编队,顺序执行。
gulp.task('build', function (done) { runSequence( ['clean:dev', 'clean:build'], ['usemin:dev'], ['webpack:build'], ['copy:dev'], ['revCSS', 'revJS'], ['revCollectorHtml'], done ); })

还有常用的如 gulp-unify、gulp-minifyCss、gulp-concat等等非常常见就不做介绍了。

4.使用 gulp 要注意的问题

gulp.task('任务名',funciton(){ return //记得return,异步加载任务,不出错。 })

gulp.task('watch',['clean'] ,function () { gulp.watch('./src/*.html', ['usemin:dev']); });
这种写法是指,在clean任务之后执行 watch,同步执行。

可以用 gulp 执行 webpack
let webpack = require('webpack'), gulp = require('gulp'), $ = require('gulp-load-plugins')(), webpackStream = require('webpack-stream');

//js构建任务 gulp.task('webpack:dev', () => { return gulp.src('./src/app/app.js') .pipe($.plumber()) .pipe(webpackStream(require('./webpack.config.dev.js'), webpack)) .pipe(gulp.dest('./dev')); });

//js构建任务 gulp.task('webpack:build', () => { return gulp.src('./src/app/app.js') .pipe($.plumber()) .pipe(webpackStream(require('./webpack.config.build.js'), webpack)) .pipe(gulp.dest('./dev')); });

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容