gulp以task的形式组织任务。

在每一个任务中,从gulp.src()指定文件源头开始,经过一系列pipe管道处理, 最后结果保存到gulp.dest指定的目录中,(或输出到stream)

任务的顺序用runSequence来组织,把可以并行的的任务放在一个数组里面, 数组之间是串行的
runSequence(['clean'], ['copy-to-one-folder'], ['publish'], callback);

(备注: 加形参callback彻底变成串行)

把需要发布的从多处汇总到一个目录dist/src
gulp.task("copy-to-one-folder", function(){
gulp.src(["c:/labs3/TestLab/NodeServer/routes/**/*"], {base: "c:/labs3/TestLab/"})
.pipe(gulp.dest('dist/src'));

return gulp.src(["c:/labs3/TestLab/HomeFinder/**/*"], {base:"c:/labs3/TestLab/HomeFinder/"})
.pipe(gulp.dest('dist/src'));
});

把汇总后的文件zip到 dist/release目录下

如何需要rename文件的名称,
对于单个文件 .pipe(rename("main/text/ciao/goodbye.md"))
对于模式修改:
.pipe(rename(function (path) {
path.dirname += "/ciao";
path.basename += "-goodbye";
path.extname = ".md"
}))

如何需要replace文件中的字符串,(支持正则表达式),(最好以单个文件作为gulp.src源, 以减少计算量)
.pipe(replace('bar', 'foo'))
.pipe(replace(/foo(.{3})/g, '$1foo'))

用if添加, 限定repalce和rename,会更加有效率
如果是 *.html文件, .pipe(gulpif('*.html', do-sth, else-do-sth))
.pipe($.if('*.html', do-sth, else-do-sth))

注意选用 gulp-系列的模块'gulp-replace'不是 'replace', 这是两个不同的模块!!!

var gulpIgnore = require('gulp-ignore');
.pipe(gulpIgnore.exclude(condition))

加!前缀排除指定的目录
gulp.src(['./*.js', '!./node_modules/**'])

文件合并与minify

1) useref以html文件中的标记为参考, 提取其中的文件路径,合并成一个大文件,
并且minify和uglify。 (可以修改文件名称, 文件中的字符串)
gulp.task("concat", function(){
return gulp.src(["c:/labs3/TestLab/Css3Test/index.html"], {base:"c:/labs3/TestLab/Css3Test"})
.pipe(useref())
.pipe($.if('*.html', $.replace('head', 'my head is from $' )))
.pipe(gulpif('*.html', $.replace('div', 'from gulpif' )))
.pipe(gulpif('*.css', $.rename("my-conbinted.css")))
.pipe(gulpif('*.css', minifyCss()))
.pipe(gulp.dest('dist/raw'));
});

最新版本的^3.0.7 (老版本用法稍繁琐)

用gulp建立自动工具,完成软件的编译、测试、打包和发布流程的更多相关文章

  1. Gulp和Webpack工具的区别

    引用知乎的回答:https://www.zhihu.com/question/37020798 怎么解释呢?因为 Gulp 和 browserify / webpack 不是一回事 Gulp应该和Gr ...

  2. 在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1)

    在Linux下使用RAID--使用mdadm工具创建软件Raid 0(1) RAID即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID是一些磁盘的集合, ...

  3. APICloud支持Atom编辑器,并建立开发工具核心库

    APICloud支持Atom编辑器开发工具 APICloud始终坚持多开发工具支持策略,开发者无论使用Sublime Text3.Eclipse还是Webstorm,都可以在APICloud平台中找到 ...

  4. CROSSTOOL-NG建立交叉编译工具链

    CROSSTOOL-NG建立交叉编译工具链 因为考试和学习的原因我已经一段时间没有玩我的JZ2440,现在终于考完试了,我再次找出了我的JZ2440.我之前学习的时候使用的是韦东山老师提供的开发工具, ...

  5. 前端-如何用gulp快速搭建项目(sass预编译,代码压缩,css前缀,浏览器自动刷新,雪碧图合成)

    一:gulp优点: 易于使用 通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理: 插件高质 Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作. 构建快速 利用 Node ...

  6. 面试总结之MISC(操作系统,网络,数学,软件开发,测试,工具,系统设计,算法)

    操作系统 解释堆和栈的区别. 分配在堆的内存与分配在堆栈的内存有什么不同 分配在堆的内存要手动去释放 线程与进程的区别 多线程中栈与堆是公有的还是私有的 在多线程环境下,每个线程拥有一个栈和一个程序计 ...

  7. gulp 前端构建工具入门

    gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...

  8. (转译)2019年WEB漏洞扫描工具和软件前十名推荐

    这些工具都有助于发现漏洞,从而最大限度地提高测试人员的时间和效率.这些工具,2019年更新,也可用于寻找漏洞. 为何扫描? 这资源是什么? Web应用程序对黑客具有极大的吸引力,并且出于百万种不同的原 ...

  9. APICloud重磅支持Atom编辑器,并建立开发工具核心库

    APICloud技术再次升级,不仅支持Atom编辑器开发工具,并推出核心开发工具库,使开发者进行App开发更便捷高效. APICloud支持Atom编辑器开发工具 APICloud始终坚持多开发工具支 ...

随机推荐

  1. tableView优化性能

    在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari.App Store.iTunes.Game Cent ...

  2. 【Cocos2d-x 3.x】 调度器Scheduler类源码分析

    非个人的全部理解,部分摘自cocos官网教程,感谢cocos官网. 在<CCScheduler.h>头文件中,定义了关于调度器的五个类:Timer,TimerTargetSelector, ...

  3. git的使用,通过git上传修改工程

    一:下载git,https://git-scm.com/downloads(若下载速度慢,可下载百度下的)接下来,默认配置,一直next 二:在github上注册账号,并新建一个项目test(英文有点 ...

  4. Java JDK配置环境变量

    JDK的配置环境变量. 1.下载JDK,然后安装(点下一步). 2.右键单击  "计算机" ,选择  "属性".   3.单击 "高级系统设置&quo ...

  5. 解释器模式(Interpreter Pattern)

    定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子. 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpre ...

  6. Python-Mac 安装 PyQt4

    环境: 系统: OS X 10.11.4 Python: 2.7.10 1.安装 Qt brew install qt 测试安装结果,需要正确找到 qmake 的路径 qmake 2.安装 SIP 下 ...

  7. python对象

    一: 基本概念 在pyhton中一切皆对象,就像类unix中的一切皆文件一样,恩,一切.把事物当作对象进行处理, 这样自然就成了面向对象的编程了. 所有的 Python 对像都拥有三个特性:身份,类型 ...

  8. python——socket网络编程

    一.OSI七层模型

  9. WebAPI学习点滴(二)

    刚开始学习WebApi就遇到了问题,在同一个API控制器中,如果两个方法的签名相同,比如 [HttpGet] public string GetString() { return "Hell ...

  10. 安装zabbix,make的时候报错

    CDPATH= && /bin/bash /install/Mesa-/bin/missing aclocal-1.14 -I m4 /install/Mesa-/bin/missin ...