gulp api

简介

gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成

gulp是基于Nodejs的自动任务运行器, 它能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。

gulp 和 grunt 非常类似,但相比于 grunt 的频繁 IO 操作,gulp 的流操作,能更快地更便捷地完成构建工作。

安装

  1. npm install -g gulp-cli //安装gulp命令行工具
  2. npm install --save-dev gulp //安装gulp到项目

gulpfile.js

  1. var gulp = require('gulp');
  2. gulp.task('default', function(){
  3. //codes..
  4. });

执行gulp

  1. gulp //执行 default任务
  2. gulp connect less //执行多个任务

gulp.src(glob , [options])

gulp.src() 返回当前文件流至可用的插件

  • glob string / stringArray 匹配源文件的模式字符串

    通配符路径示例:

    "src/a.js" //具体的文件

    "src/*" //src下的所有文件

    "src/**/*.js" //src下所有层级的子文件夹中的js

    "{}" //匹配多个属性 src/{a,b}.js (匹配src/a.js, src/b.js), src/*.{png,jpg,gif} (匹配src文件夹下的图片)

    !src/a.js //排除src/a.js文件

    1. var gulp = require('gulp');
    2. var less = require('gulp-less');
    3. gulp.task('testless', function(){
    4. //gulp.src('less/test/style.less')
    5. gulp.src(['less/**/*.less', '!less/{extend,page}/*.less'])
    6. .pipe(less())
    7. .pipe(gulp.dest('./css'));
  • options object 可选

    1. options =>
    2. {
    3. buffer: true, //是否缓冲文件流,处理大文件时有用
    4. read: true, //是否执行文件读取操作
    5. base: 'some/path' //输出路径的基础路径
    6. }
    7. gulp.src('client/js/**/*.js')
    8. .pipe(minify())
    9. .pipe(gulp.dest('build')); //writes 'build/somdir/somefile.js'
    10. gulp.src('client/js/**/*.js', {base:'client'})
    11. .pipe(minify())
    12. .pipe(gulp.dest('build'));//writes 'build/js/somedir/somefile.js'

gulp.dest(path, [options])

gulp.dest() 指定处理完成后文件的输出路径

  1. gulp.src('./client/templates/*.jade')
  2. .pipe(jade())
  3. .pipe(gulp.dest('./build/tempaltes')
  4. .pipe(minify())
  5. .pipe(gulp.dest('./build/minify_templates');
  • path string or function 指定文件的输出路径

  • options 可选

    1. options=>{
    2. cwd: process.cwd(), //文件的输出路径若为相对路径,则相对cwd
    3. mode: '0777' //被创建文件的权限
    4. }

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

name string 任务名称 不能有空格

deps stringArray 该任务依赖的任务,注意:被依赖的任务需返回它的事件流

fn function 该任务调用的插件

  1. gulp.task('testless', function(){
  2. return gulp.src(['less/style.less'])
  3. .pipe(less())
  4. .pipe(gulp.dest('./css');
  5. });
  6. gulp.task('minicss', ['testless'], function(){
  7. //执行完testless任务后 再执行minicss任务
  8. gulp.src(['css/*.css'])
  9. .pipe(minifyCss())
  10. .pipe(gulp.dest('./dist/css'));

gulp.watch(glob, [options], tasks) ,gulp.watch(glob, [options], [fn])

gulp.watch() 监听文件变化并执行指定任务

glob string or stringArray 同 gulp.src(glob)

options object 可选

tasks stringArray 需执行的任务数组

fn function 每个文件变化执行的回调函数

  1. gulp.task('watch1', function(){
  2. gulp.watch('less/**/*.less', ['testless']);
  3. });
  4. gulp.task('watch2', function(){
  5. gulp.watch('js/**/*.js', function(file){
  6. console.log('file ' + file.path + ' was ' + file.type + ', running tasks..');
  7. });
  8. });

gulp api的更多相关文章

  1. gulp API 文档

    gulp.src(globs[, options]) 输出(Emits)符合所提供的匹配模式(glob)或者匹配模式的数组(array of globs)的文件. 将返回一个 Vinyl files  ...

  2. Gulp API之怎样压缩CSS

    先做一个简单的科普 gulp.src() 是用来定位执行路径的,参数通常是一个path gulp.dest() 是用来定位输出路径的,执行的结果都会保存在这个路径下面,可以到路径下面查看结果 gulp ...

  3. gulp初学

    原文地址:gulp初学 至于gulp与grunt的区别,用过的人都略知一二,总的来说就是2点: 1.gulp的gulpfile.js  配置简单而且更容易阅读和维护.之所以如此,是因为它们的工作方式不 ...

  4. Gulp探究折腾之路(I)

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

  5. 用gulp构建你的前端项目

    前言 前端技术发展日新月异,随着模块化.组件化的提出,前端变得越来越复杂,静态资源越来越多,那么对静态资源的处理,如压缩,合并,去掉调试信息.. 如果还是人工去处理,效率非常之低且还容易出错,于是自动 ...

  6. gulp使用小结(二)

    接上篇文章接Gulp使用小结(一) 内容如下: 首先,偶在gulp-demos上已经提交了个较通用的栗子...俺琢磨半天,原准备分阶段搞些 Gulp 套路,但是写完介个栗子之后,觉得已经能覆盖绝大多数 ...

  7. gulp使用小结(一)

    这篇文章不会介绍 gulp 的起源.发展:不会去一个个讲解 gulp API:也不想出现大段大段的 gulpfile.js 代码:更木有帮你分析 gulp 实现原理,只有一些我自己对 gulp 的使用 ...

  8. gulp学习笔记4

    gulp系列学习笔记: 1.gulp学习笔记1 2.gulp学习笔记2 3.gulp学习笔记3 4.gulp学习笔记4 之前的任务都是单个的,比较简单.接下去我们开始引用多个插件,一次性把任务搞定,省 ...

  9. gulp进阶构建项目由浅入深

    gulp进阶构建项目由浅入深 阅读目录 gulp基本安装和使用 gulp API介绍 Gulp.src(globs[,options]) gulp.dest(path[,options]) gulp. ...

随机推荐

  1. Android listview 的优化

    接[Android listview的应用][1] 在我们上一篇[Android listview的应用][1]中,我们的adapter中的getView()方法中每次都将布局重新加载一遍,这样就会导 ...

  2. 【关于360极速浏览器的xx极速模式自动切换到兼容模式】

    原理上是可以的. 1  360基于Chromium 开源浏览器内核,它本身就是一个壳子.. 2  7.0之后的极速浏览器,不支持 它官方的那个声明标记.<meta name=”renderer” ...

  3. java设计模式--行为型模式--命令模式

    命令模式 概述 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作. 适用性 .抽象出待执行的动作以参数化某对象. .在不同的时刻指定.排 ...

  4. Mysql 利用multiline 实现多行匹配

    <pre name="code" class="html">input { file { type => "zj_mysql&quo ...

  5. 弹出框、遮罩层demo

    仿alert.confirm的弹出框. 弹出后,用遮罩层将背景虚化. 代码如下: <html> <meta http-equiv="Content-Type" c ...

  6. Eclipse setting Java code style and codetemplate

    1.open the eclipse tool window First click the Window menu,then check the children's menu which name ...

  7. hdu 5093 Battle ships 匈牙利 很巧妙的建图思路

    //这题逼我把匈牙利学了 之前一直很勤快敲网络流 而且不以为耻反以为荣 解:首先按行扫描编号,如果在同一块中(即可以相互攻击),那么将其标为相同的数组,对列也做同样的操作. 然后扫描整张图,如果行编号 ...

  8. [Leetcode][Python]49: Anagrams

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 49: Anagramshttps://leetcode.com/proble ...

  9. 【LeetCode练习题】Unique Paths

    Unique Paths A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagra ...

  10. Eclipse 支持jQuery 自动提示

    1.下载jQuery文件 http://download.csdn.net/detail/emoven/6294377 2.设置spket Window -> Preferences -> ...