gulp API 简介

一、gulp API 简介

gulp 本身能做的事情非常少,主要是通过插件来提供各种功能,gulp 本身只提供了4个非常简洁的 API, 掌握这4个 API 你就基本掌握了 gulp 的全部。

1、gulp.src(globs[, options])

2、gulp.dest(path[, options])

3、gulp.task(name[, deps], fn)

4、gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])

二、gulp.src(globs[, options])

说明:返回当前指定文件流至可用插件。

globs:需要处理的源文件匹配符路径。类型(必填):String or StringArray。

通配符路径匹配示例:

1、"src/index.js": 指定具体文件;

2、"{}": 匹配多个属性。例:src/{a,b}.js(包含 a.js 和 b.js 文件)  src/*.{jpg,png,gif}(包含 src 下的所有 jpg/png/gif 文件);

3、"!": 排除指定文件。例:!src/index.js(不包含 src 下的 index.js 文件);

4、"*.scss": * 号匹配当前目录任意文件,所以这里 *.scss 匹配当前目录下所有 scss 文件;

5、"**/*.scss": 匹配当前目录及其子目录下的所有 scss 文件;

6、"*.+(scss|sass)": + 号后面会跟着圆括号,里面的元素用 | 分割,匹配多个选项。这里将匹配 scss 和 sass 文件;

options:类型(可选):Object,有3个属性 buffer、read、base。

1、options.buffer:类型:Boolean  默认:true 设置为 false,将返回 file.content 的流并且不缓冲文件,处理大文件时非常有用;

2、options.read:类型:Boolean  默认:true 设置 false,将不执行读取文件操作,返回null;

3、options.base:类型:String  设置输出路径以某个路径的某个组成部分为基础向后拼接;

示例:

gulp.src([‘js/*.js‘,‘css/*.css‘,‘*.html‘])   // 使用数组的方式来匹配多种文件gulp.src([‘src/*.js‘,‘!src/b*.js‘])  // 匹配所有js文件,但排除掉以 b 开头的 js 文件gulp.src([‘!src/b*.js‘,‘src/*.js‘])  // 不会排除任何文件,因为排除模式不能出现在数组的第一个元素中gulp.src(‘src/js/**/*.js‘, { base: ‘src‘ })  // 保留 src 路径后的所有路径名称gulp.src([‘less/**/*.less‘,‘!less/{extend,page}/*.less‘])  // 匹配 less 目录下和子目录下的所有 less 文件,但排除 less 目录下 extend 和 page 目录下的所有 less 文件

三、gulp.dest(path[, options])

说明:dest 方法是指定处理完后文件输出的路径。

path: 类型(必填):String or Function 指定文件输出路径,或者定义函数返回文件输出路径亦可。

options:类型(可选):Object,有2个属性 cwd、mode。

1、options.cwd:类型:String  默认:process.cwd():前脚本的工作目录的路径,只在所给的输出目录是相对路径时候有效;

2、options.mode:类型:String  默认:0777 指定被创建文件夹的权限;

PS:我们给 gulp.dest() 传入的路径参数,只能用来指定要生成的文件的目录,而不能指定生成文件的文件名,它生成文件的文件名使用的是导入到它的文件流自身的文件名,所以生成的文件名是由导入到它的文件流决定的,即使我们给它传入一个带有文件名的路径参数,然后它也会把这个文件名当做是目录名。要想改变文件名,可以使用 gulp-rename 插件。

示例:

 // 最终生成的文件路径为 dist/foot.js/jquery.js,而不是 dist/foot.jsgulp.src(‘script/jquery.js‘)            .pipe(gulp.dest(‘dist/foot.js‘));         // 最后生成的文件路径为 dist/**/*.js // 如果 **/*.js 匹配到的文件为 jquery/jquery.js ,则生成的文件路径为 dist/jquery/jquery.jsgulp.src(‘script/**/*.js‘)    // 有通配符开始出现的那部分路径为 **/*.js        .pipe(gulp.dest(‘dist‘)); 

 // 最后生成的文件路径为 dist/avalon.js      gulp.src(‘script/avalon/avalon.js‘)  // 没有通配符出现的情况            .pipe(gulp.dest(‘dist‘));          // 假设匹配到的文件为 script/util/underscore.js// 则最后生成的文件路径为 dist/util/underscore.jsgulp.src(‘script/**/underscore.js‘)   // 有通配符开始出现的那部分路径为 **/underscore.js        .pipe(gulp.dest(‘dist‘)); 

// 假设匹配到的文件为 script/zepto.js        //则最后生成的文件路径为 dist/zepto.js         gulp.src(‘script/*‘)  // 有通配符出现的那部分路径为  *                 .pipe(gulp.dest(‘dist‘));         //设该模式匹配到了文件 app/src/css/normal.css // 用 dist 替换掉 base 路径,最终得到 dist/css/normal.css  gulp.src(‘app/src/**/*.css‘)   // 此时 base 的值为 app/src,也就是说它的 base 路径为 app/src                 .pipe(gulp.dest(‘dist‘));

// 假设匹配到的文件为 script/lib/jquery.js// 生成的文件路径为 build/jquery.jsgulp.src(‘script/lib/*.js‘)   // 没有配置 base 参数,此时默认的 base 路径为 script/lib        .pipe(gulp.dest(‘build‘));          // 假设匹配到的文件为 script/lib/jquery.js     // 此时生成的文件路径为 build/lib/jquery.js  gulp.src(‘script/lib/*.js‘, {base:‘script‘}) // 配置了 base 参数,此时 base 路径为 script        .pipe(gulp.dest(‘build‘));

四、gulp.task(name[, deps], fn)

说明:task 方法定义一个 gulp 任务。

name:类型(必填):String,指定任务的名称(不应该有空格)。

deps:类型(可选):StringArray,该任务依赖的任务(注意:被依赖的任务需要返回当前任务的事件流),为一个数组。当前定义的任务会在所有依赖的任务执行完毕后才开始执行。如果没有依赖,则可省略这个参数。

fn:类型(必填):Function,该任务调用的插件操作。

示例:

// 定义一个没有依赖的任务gulp.task(‘css‘, function () {    return gulp.src([‘less/style.less‘])        .pipe(less())        .pipe(gulp.dest(‘./css‘));});

// 定义一个有依赖的任务gulp.task(‘mincss‘, [‘css‘], function () {          // 执行完 css 任务后再执行 mincss 任务    return gulp.src([‘css/*.css‘])        .pipe(minifyCss())        .pipe(gulp.dest(‘./dist/css‘));});

// 定义一个有多个依赖的默认任务gulp.task(‘default‘, [‘css‘,‘concat‘,‘minifyCss‘]);  // 只要执行 default 任务就相当于把 "css","concat","minifyCss" 这三个任务都执行了

五、gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])

说明:watch 方法是用于监听文件变化,文件一修改就会执行指定的任务。

glob:需要处理的源文件匹配符路径。类型(必填):String or StringArray。

opts:类型(可选):Object,为一个可选的配置对象,通常不需要用到。

tasks:类型(必填):StringArray,需要执行的任务的名称数组。

cb(event):类型(可选):Function 每个文件变化执行的回调函数。每当监视的文件发生变化时,就会调用这个函数,并且会给它传入一个对象,该对象包含了文件变化的一些信息,type 属性为变化的类型,可以是 added, changed, deleted;path 属性为发生变化的文件的路径。

示例:

gulp.task(‘watch-less‘, function () {    gulp.watch(‘less/**/*.less‘, [‘css‘]);});

gulp.task(‘watch-js‘, function () {    gulp.watch(‘js/**/*.js‘, function (event) {        // 输出发生改变文件的一些信息        console.log(‘File ‘ + event.path + ‘ was ‘ + event.type + ‘, running tasks...‘);    });});
时间: 2024-12-22 04:11:05

gulp API 简介的相关文章

Web Api 简介

ASP.NET Web API 简介 ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RESTful 服务的理想平台. ASP.NET Web API 特性 ASP.NET Web API 包含下列特性: 先进的 HTTP 编程模型: 使用新的强类型的 HTTP 对象模型直接操作 HTTP 请求和响应, 在 HTTP客户端使用相同的编程模型和 HTTP

Pomelo开发中Web客户端开发API简介

使用pomelo做服务端开发时,无论什么客户端,只要能遵循与服务端的线上协议,就能够与服务端建立通信.pomelo内建提供的sioconnector和hybridconnector都定义了自己的协议格式,其中sioconnector用于socket.io的通信,hybridconnector则用来处理websocket和tcp的连接通信.为了方便客户端的开发,pomelo提供了部分平台的客户端SDK,主要包括用于Web端的JavaScript的SDK以及基于C/C++语言开发的libpomelo

ZABBIX API简介及使用

API简介 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时.很难想象管理数千台服务器而没有自动化是多么的困难.Zabbix API为批量操作.第三方软件集成以及其他作用提供可编程接口. Zabbix API是在1.8版本中开始引进并且已经被广泛应用.所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上.Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作.它允许你通过JSON RPC协议来创建.更新和获

ASP.NET Web API 简介

ASP.NET Web API 简介 ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RESTful 服务的理想平台. ASP.NET Web API 特性 ASP.NET Web API 包含下列特性: 先进的 HTTP 编程模型: 使用新的强类型的 HTTP 对象模型直接操作 HTTP 请求和响应, 在 HTTP客户端使用相同的编程模型和 HTTP

构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介

构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组成部分,以便快速入门. 查看本系列更多内容 | 0 评论: Ed Slattery ([email protected]), 软件工程师, IBM UK Pete Robbins ([email protected]), 软件工程师, IBM UK Andrew Borley ([email pro

JAIN SIP API 简介

摘要 本文介绍如何在 Java SE 上使用会话发起协议 (SIP) 开发客户端应用程序.文中展示 JAIN SIP API 这种强大的"SIP 堆栈".首先介绍一个简单的 IM 应用程序,然后对其进行剖析来了解该技术. 关于 JAIN SIP API 集成网络 Java API (JAIN) 是一个管理电信标准的 JCP 工作组.会话发起协议 (SIP) 是一种标准通信协议,之前的文章中已对其进行了讨论.将 Java 与 SIP 结合起来就得到了 JAIN SIP API,这是一种强

腾讯地图API简介、整理

目录 腾讯地图API 1 1.API概览... 1 1.1 WebService API(官网注明是beta版本,可能不稳定,慎用):... 1 1.2 URL API:... 2 1.3 静态图API:... 2 1.3 JavaScript API V2:... 2 1.4 另外还有Android SDK, Android 定位SDK,和IOS SDK,主要用于手机端开发.     2 2. 下面重点讲解JavaScript API V2:... 2 2.1最简单的地图-显示一张以坐标为中心

ZooKeeper系列4:ZooKeeper API简介及编程

问题导读: 1.ZooKeeper API 共包含几个包? 2.如何使用ZooKeeper API 创建zookeeper应用程序? 1)ZooKeeper API 简介 ZooKeeper API 共包含 5 个包,分别为: org.apache.zookeeper , org.apache.zookeeper.data ,org.apache.zookeeper.server , org.apache.zookeeper.server.quorum 和org.apache.zookeeper

Gulp.js简介

Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必须反复执行的.如 新图片或修改后图片的压缩 去除调试语句如console,debugger 合并和压缩css和js 把更新的文件部署到服务器 你可能设想大家都会记住所有的这些操作,但总会有人忘记一两条.随着项目越来越大,上面的工作越来越浪费时间.只好设专人来完成这些枯燥的工作. 能不能让这些工作不用