前言

先说说为什么会使用gulp。

当你沉醉于撸代码之时,是否想过正规的前端代码需要走哪些流程,复杂的不说了,有几点想必你也思考过,比如:

1、代码的压缩合并、图片压缩怎么搞;

2、代码校验,是否规范;

3、Less是什么鬼?咋用呢?

作为一名新世纪富有朝气的九零后大军一员,虽为码农,心却蓬勃啊。对于新技术和新工具必然有着极大的兴趣,gulp在当下已不算太新鲜的技术,此次正逢机会,必然拿来练练手。

我们第四迭代构建工具用的是Grunt,这次第五迭代采用gulp,相对于前者,gulp属于晚辈,易于使用,配置简单,上手快,速度快。

1、什么是Gulp

Gulp.js是一种基于流,代码优于配置的新一代构建工具。 官网给出的解释是:1、自动化; 2、平台移植性; 3、富生态系统;4、简单,详细的解释我们后面讲。

2、Gulp特性

· 易于使用

遵循代码优于配置策略,维护Gulp更像是写代码,Gulp可以让简单的任务简单,复杂的任务更可管理;

· 构建快速

优于Gulp基于Node.js,通过流式操作,减少频繁的IO操作,更快构建项目(Grunt便是频繁IO);

· 插件高质

Gulp 有严格的插件指导策略,确保插件能简单高质的工作。并且你可以使用NPM享用超过2000个插件,甚至可以自己开发并发布;

· 易于学习

构建就像流管道一样,轻松加愉快。少量的API,使用起来so easy;

3、Gulp安装和使用

1、Gulp是基于Node.js的,所以先安装Node.js,这里不做赘述,通过英文官网下载或者中文网下载安装。

2、确保正确安装了Nodejs环境,然后用以下命令全局方式安装Gulp:

  1. $ npm install gulp -g

3、如果想在安装的时候把gulp写进项目package.json文件的依赖中,则可以加上-save-dev:

  1. $ npm install --save-dev gulp

4、在项目根目录创建gulpfile.js文件:

  1. var gulp = require('gulp');
  2.  
  3. gulp.task('default', function() {
  4.  
  5. console.log('hello world');
  6.  
  7. });

5、运行Gulp:

  1. $ gulp

默认任务(名为'default')将被执行,控制台输出 hello world

如果需要运行指定任务,使用 gulp taskname命令。

4、Gulp API

使用gulp仅需知道4个API即可:gulp.task()gulp.src()gulp.dest()gulp.watch(),所以很容易就能掌握,下面针对这四种做一个简单介绍:

gulp.src(globs[, options])

gulp.src() 方法正是用来获取流的,但要注意这个流里的内容不是原始的文件流,而是一个虚拟文件对象流,这个虚拟文件对象中存储着原始文件的路径、文件名、内容等信息,本文暂不对文件流进行展开,你只需简单的理解可以用这个方法来读取你需要操作的文件就行了,globs 参数是文件匹配模式(类似正则表达式),用来匹配文件路径(包括文件名),当然这里也可以直接指定某个具体的文件路径。当有多个匹配模式时,该参数可以为一个数组。 options 为可选参数。通常情况下我们不需要用到,暂不考虑。

gulp.dest(path[,options])

gulp.dest() 方法是用来写文件的,path 为写入文件的路径,options 为一个可选的参数对象,通常我们不需要用到,暂不考虑。

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

gulp.task 方法用来定义任务, name 为任务名, deps 是当前定义的任务需要依赖的其他任务, 为一个数组。当前定义的任务会在所有依赖的任务执行完毕后才开始执行。 如果没有依赖,则可省略这个参数, fn 为任务函数,我们把任务要执行的代码都写在里面。该参数也是可选的。

gulp.watch(glob[, opts], tasks)

gulp.watch() 用来监视文件的变化,当文件发生变化后,我们可以利用它来执行相应的任务,例如文件压缩等。 glob 为要监视的文件匹配模式,规则和用法与 gulp.src() 方法中的glob相同。opts 为一个可选的配置对象,通常不需要用到,暂不考虑。 tasks 为文件变化后要执行的任务,为一个数组。

5、常用插件

  1. 编译Less (gulp-less)

  2. Autoprefixer (gulp-autoprefixer)

  3. 缩小化(minify)CSS (gulp-minify-css)

  4. JSHint (gulp-jshint)

  5. 拼接 (gulp-concat)

  6. 丑化(Uglify) (gulp-uglify)

  7. 图片压缩 (gulp-imagemin)

  8. 即时重整(LiveReload) (gulp-livereload)

  9. 清理档案 (gulp-clean)

  10. 图片快取,只有更改过得图片会进行压缩 (gulp-cache)

  11. 更动通知 (gulp-notify)

插件搜索:http://gulpjs.com/plugins/

插件安装(用less举例):$ npm install gulp-less(安装更多只需拼接其后)

Gulp:基于流的自动化构建工具的更多相关文章

  1. 基于流的自动化构建工具------gulp (简单配置)

    项目上线也有一阵子,回头过来看了看从最初的项目配置到开发的过程,总有些感慨,疲软期,正好花点时间,看看最初的配置情况 随着前端的发展,前端工程化慢慢成为业内的主流方式,项目开发的各种构建工具,也出现了 ...

  2. gulp详细教程——前端自动化构建工具

    项目构建 一个项目是由多个开发者共同开发一个项目,各负责不同的模块,这就会造成一个完整的项目许多‘代码片段’组成,合并css.javascript,压缩html.css.javascript.imag ...

  3. 基于 Groovy 的自动化构建工具 Gradle 入门(转)

    本人工作之初没有使用自动化构建,后来敏捷了,开始使用 Ant - 完全面向过程的定义步骤,不进行依赖管理.再发展到 Maven,面向对象的方式管理工程,有了依赖的管理,JAR 包统一从中央仓库获得,保 ...

  4. gulp基于node流的自动化构建工具

    GULP 在我才接触gulp的时候 看他就是一个 通过压缩各种文件来提升用户体验的开发工具   那是因为  对他的理解并不深    他真正强大 之处 在于他的     管子  .pipe()  可以 ...

  5. JavaScript自动化构建工具入门----grunt、gulp、webpack

    蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动  自动化时代的程序员: 希望一切都可以自动完成  ...

  6. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  7. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  8. 前端自动化构建工具 gulp 学习笔记 一、

    一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ...

  9. JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

随机推荐

  1. php 之 分页查询的使用方法及其类的封装

    一.分页的使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  2. PHP二维数组排序函数

    PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义. 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义: functi ...

  3. uC/OS-II中的中断(转)

    中断是指在程序运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程. 中断服务函数(ISR)是应中断请求而运行的程序. 中断向量就是中断服务函数(ISR)的入口地址, ...

  4. [POJ] 2239 Selecting Courses(二分图最大匹配)

    题目地址:http://poj.org/problem?id=2239 Li Ming大学选课,每天12节课,每周7天,每种同样的课可能有多节分布在不同天的不同节.问Li Ming最多可以选多少节课. ...

  5. POJ 2540 Hotter Colder

    http://poj.org/problem?id=2540 题意:给你每次行走的路径,而且告诉你每次离一个点光源是远了还是近了,要求每次光源可能存在的位置的面积. 思路:如果出现"same ...

  6. 查询Sqlserver 表结构信息 SQL

    SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = ...

  7. 直接修改别人jar包里面的class文件 工具:jclasslib

    出于某些原因 需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,没有找 ...

  8. Android自定义ListView的Item无法响应OnItemClick的解决办法

     转: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也 ...

  9. [置顶] 单片机C语言易错知识点经验笔记

    今天写这一篇文章并不是因为已经想好了一篇文章才写下来,而是我要将这一篇文章作为一个长期的笔记来写,我会一直更新.在进行单片机开发时,经常都会出现一些很不起眼的问题,这些问题其实都是很基础的c语言知识点 ...

  10. C# 使用Sqlite 如何返回统计行数

    Visual 2010 with Sqlite 需要这样Query 数据: select count(*) from tblOrder where OrderStartTime >= '2013 ...