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. SQL通用函数-nvl-nvl2 -nvlif-nullif-coalesce-decode-case

    通用函数适用于任何类型数据(包括空值),一般用于实现空值处理.条件运算和多路分支结果,下面介绍其中常用的几种: nvl(exp1, exp2) 函数nvl(exp1, exp2)用于将空值转换为指定的 ...

  2. 获取checkboxlist选中的值以及绑定来自之前选中的来自数据库的值

    //////ps:一下几句都是一个意思,为的是以后有人搜索关键字的时候能定位到这里///checkboxlist绑定选中值///checkboxlist绑定来之mssql数据的值///checkbox ...

  3. a标签调用js的几种方法

    我们常用的在a标签中有点击事件: <a> 标签的 href 属性用于指定超链接目标的 URL,href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScrip ...

  4. Discuz!NT 3.5.2正式版与Asp.net网站会员信息整合

    Discuz!NT 提供了很多对外的接口利于与别的网站进行整合,经本人亲测,觉得开放的接口还是挺到位的.开发.测试一次通过,只不过api文档寻找无门,只能自己琢磨,费了不少周折,不过,功夫不负有心人, ...

  5. Android Intent到底能做些什么

    Android Intent到底能做些什么 原文:http://www.toutiao.com/i6348296465147757058/?tt_from=mobile_qq&utm_camp ...

  6. Catel帮助手册-Catel.Core:(1)参数检查

      我们检查方法是否正确,一般是返回对错,或者是是否抛出一个异常,大部分人不检查异常的正确性,那么这种错误在很深的堆栈中,很难查看. Catel与一般的检查方法不同,一般是使用   public vo ...

  7. 树莓派编译C++

    首次研究树莓派~  安装的Linux 编译C++时,就出现了问题,未定义!!无法识别 查了原因是没有安装  build-essential 解决方法 sudo apt-get install buil ...

  8. [转]Windows Shell 编程 第九章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987969】

    第九章 图标与Windows任务条 如果问一个非程序人员Windows最好的特色是什么,得到的答案应该是系统最有吸引力的图标.无论是Windows98现在支持的通用串行总线(USB)还是WDM(看上去 ...

  9. Python 使用for代替in判断一个元素属于某个集合

    string1 = raw_input("输入in之前的字符:")string2 = raw_input("输入in之后的字符:")x = ''if len(s ...

  10. z-index 所遇问题

    document.getElementById('wx_share_img').style.cssText = "width:100%;height:100%;position:fixed; ...