1. gulp 的简介

  gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率。gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。在实现上,她借鉴了Unix操作系统 的管道(pipe)思想,前一级的输出,直接变成后一级的输入,使得在操作上非常简单。通过本文,我们将学习如何使用Gulp来改变开发流程,从而使开发 更加快速高效。

  在学习前,先谈谈大致使用gulp的步骤,给读者以初步的认识。首先当然是安装nodejs,通过nodejs的npm全局安装和项目安装gulp,其次 在项目里安装所需要的gulp插件,然后新建gulp的配置文件gulpfile.js并写好配置信息(定义gulp任务),最后通过命令提示符运行 gulp任务即可。

  安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务

2.  关于gulp之前的 介绍

  首先是nodejs的安装 使用版本管理器 git。 通过 git bush 来进行版本管理操作。

  可以通过查看版本号来检测是否安装成功

  node -v (node package manager)nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等))

  npm -v

  gulp --version

  使用 npm 安装插件: npm install <name> [-g] [--save-dev]

            npm install gulp-less --save-dev

  -g 全局安装

    配置package.json的配置信息 通过npm init命令。

  --save  将保存配置信息至package.json (package.json 是 nodejs项目配置文件)

  -dev  保存至package.json 的 devDependencies节点  不指定-dev 将保存至depengdencies节点。

 选装 cnpm

  因为主要是因为npm是从国外的服务器下载 受网络影响。 所以 使用淘宝镜像。

  安装 cnpm  npm install cnpm -g --registry=https://registry.npm.taobao.org

  使用方法跟npm 完全一样。

3. 正式进入 gulp的学习

   全局安装 gulp  

    cnpm install gulp -g

  查看版本号 gulp --version

  新建package.json文件 package.json是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件;

   $ npm init

   package.json 是类似这样的一个json文件(注意 在json内部是不能写注释的)

   

4. 本地安装 gulp 插件

  本地安装 cnpm install gulp --save-dev

  以示例 gulp-less为例(编译 less文件) 命令提示符执行 cnpm install gulp-less --save-dev

  将会安装在node_modules的 gulp-less 目录下。 改目录下有一个gulp-less的使用帮助文档 README.md

  PS: 全局安装了gulp,项目也安装了gulp,全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能

  

5. 新建gulpfile.js 文件(重要)

    gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件(其实将gulpfile.js放入其他文件夹下亦可)。

    

  //导入工具包 require('node_modules里对应模块')
  var gulp = require('gulp'), //本地安装gulp所用到的地方
      less = require('gulp-less');
 
  //定义一个testLess任务(自定义任务名称)
  gulp.task('testLess', function () {
      gulp.src('src/less/index.less') //该任务针对的文件
          .pipe(less()) //该任务调用的模块
          .pipe(gulp.dest('src/css')); //将会在src/css下生成index.css
  });
 
  gulp.task('default',['testLess', 'elseTask']); //定义默认任务 elseTask为其他任务,该示例没有定义elseTask任务
 
  //gulp.task(name[, deps], fn) 定义任务  name:任务名称 deps:依赖任务名称 fn:回调函数
  //gulp.src(globs[, options]) 执行任务处理的文件  globs:处理的文件路径(字符串或者字符串数组)
  //gulp.dest(path[, options]) 处理完后文件生成路径
  

6.  运行 gulp

  命令提示符 gulp任务名称

  编译less 命令提示符 执行 gulp testless

  var gulp = require('gulp');
 
    gulp.task('default', function () {
  });
  
 
  gulp.js 的 API 非常简单,我们只需要了解四个就足以应对绝大多数的脚本编写了
  
  
  gulp.task(name[,deps ], fn):注册任务
    
  name 是任务名称; deps是可选的数组 其中列出需要在本任务运行要执行的任务;fn 是任务体。这是gulp.js的核心了。需要花时间来吃  透。详情见此
  
   gulp.src( globs[,options]) 指明源文件路径
  
  gulp.dest(path) 指明任务处理后的目标输出路径
  
  gulp.watch(glob[,options],tasks)监视文件的变化并运行相应的任务。你没看错,watch 作为核心 API 出现在 gulp.js 里了,
 
 
 插件
  
  A) 语法检查 (gulp-jshint)
  
  B) 合并文件 (gulp-concat)
  
  C) 压缩代码 (gulp-uglify)
  
  D) 文件重命名 (gulp-rename)
 
 
$ cnpm install <plugin_name> --save-dev
 
最后的代码完成如下
  
  
  
 
 
  可以看出,基本上所有的任务体都是这么个模式:
 
   
 
   非常容易理解!获取要处理的文件,传递给下一个环节处理,然后把返回的结果继续传递给下一个环节……直到所有环节完成。
 
  pipe 就是 stream 模块里负责传递流数据的方法而已,
    
  至于最开始的 return 则是把整个任务的 stream 对象返回出去,以便任务和任务可以依次传递执行。
 
 
   写成下面的方式 更为直观
  
 
   

gulp 构建工具的更多相关文章

  1. Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用

    Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用 Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.cs ...

  2. [翻译]在gulp构建工具中使用PostCSS

    前言 PostCSS已经在一段时间内迅速普及,如果你还不知道PostCSS或还没有使用它,我建议你看一下之前的一篇介绍文章<PostCSS简介>,其中介绍了使用PostCSS的基本方法,包 ...

  3. ASP.NET5之客户端开发:Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用

    Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.css预处理器的构建工具,它帮助开发者处理客户端开发中的一些烦操重复性的工作.Grun ...

  4. gulp构建工具学习汇总

    前端脚手架____gulp配置文件------- https://pan.baidu.com/s/1eSs7COy 1:有了package.json 直接 npm install自动下载相应的npm包 ...

  5. gulp构建工具的安装

    第一步:node.js安装 在gulp安装之前,本机需要node环境.访问http://nodejs.org,然后点击大大的绿色的install按钮,下载完成后直接运行程序.npm会随着安装包一起安装 ...

  6. 使用gulp构建工具

    之前一个demo中用的是grunt,照着grunt用到的插件找了下gulp的,总体使用还算顺畅,说实话并不觉得学习成本有降低什么的,差不多.不过也遇到一些问题: 1.gulp.dest()输出目录需要 ...

  7. express+gulp构建项目(二)启动项目和主文件

    这一次整理的内容是项目主文件和如何启动项目. 启动项目 通过nodejs官网的例子https://nodejs.org/docs/latest-v4.x/doc/api/synopsis.html我们 ...

  8. 构建工具--glup如何压缩,丑化代码

    目录 为什么使用 实现 为什么使用 最近在迭代公司的项目,发现项目有如下缺点: 代码没有压缩,js文件,内存大,放在服务器上占空间: 源代码没有混淆或者丑化处理,本公司的程序员写出来的代码和高质量逻辑 ...

  9. 前端打包构建工具gulp快速入门

    因为之前一直有人给我推荐gulp,说他这里好哪里好的.实际上对我来说够用就行.grunt熟悉以后实际上他的配置也不难,说到效率的话确实是个问题,尤其项目大了以后,目前位置遇到的项目都还可以忍受.不过不 ...

随机推荐

  1. SqlServer2000下实现行列转换

    SqlServer2000下实现行列转换 2011-04-06 22:07:07|  分类: SQL Server |  标签:sqlserver  2000  行列转换  sql  |举报|字号 订 ...

  2. OD: Format String, SQL Injection, XSS

    Format String 格式化串漏洞 考虑如下的代码: #include<stdio.h> int main() { int a=44,b=77; printf("a=%d, ...

  3. django: form fileupload - 2

    继续介绍文件上传的第二种形式和第三种形式. ------------------------------------------------------------- 第二种形式较简单,直接用 DB ...

  4. 使用Razor来进行页面布局

    UI设计师们现在也讲究页面设计的语义化和结构化,把一个页面分成很多个模块,使用语义化的类名或id来标识这些模块.Razor推出了新的布局解决方案来迎合这一潮流. 这里涉及到Razor的一些语法,大家可 ...

  5. Sql Server 2008清理数据库日志的语句

    USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECO ...

  6. Tiling_easy version(填2 x N的格子的种类)

    E - Tiling_easy version 题目大意: 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法. ...

  7. POJ3484 Showstopper (二分+字符串处理)

    POJ3484 Showstopper 题目大意: 每次给出三个数x,y,z,用这三个数构成一个等差数列,x为首项,y是末项,z是公差 总共给出n组x,y,z( n待定),求这n组数列中出现次数为奇数 ...

  8. title滚动

    代码: <html><head><title>滚动的文字在TITLE栏上不停滚动</title><script language=javascri ...

  9. set{变量 = value;}get{return 变量;}

    形如: public string _customValue        {            set { _customValue = value; }            get { re ...

  10. (摘)oracle dataguard切换

    众所周知,Data Guard已经是现今标准的主流容灾方案,由于日志传递对于网络适应程度强,且可以采用同步实时的传递方式和异步延迟的传递方式,甚至可以成为远程的异地容灾方案.不管用于何种用途,DG都免 ...