前端构建神器之 gulp

 

 由于受台风“灿鸿”影响,这个周末未能出去徒步,为了不荒废这大好的时光,故总结一下前段时间学习的gulp。

  gulp 是现在比较流行的前端构建工具,它比较显著的特点就是配置简单易学,并且gulp最大优势还在于它是利用流(Streams)的方式进行文件的处理,通过管道(pipe)将多个任务(task)及操作链接起来。因此流程更明确清晰。构建的速度上也比grunt(另一款前端构建工具)快。(如果项目很小,速度差距则不是那么明显)

gulp安装

1、首先确保你的运行环境已经安装了nodejs 环境。然后打开终端运行:

  npm install gulp -g

2、全局安装成功后还需要在你构建的项目中单独安装一下。打开终端进入项目目录运行:

  npm install gulp --save-dev

  其中--save-dev是可选的,如果加上则代表你需要将gulp写入到项目package.json文件的依赖中,否则不写入。

3、接下来在项目根目录下创建gulpfile.js文件(必须是这个名字)

1 var gulp = require(‘gulp‘);     //- 通过 require()导入gulp
2
3 gulp.task(‘default‘, function() {
4     console.log(‘hello world‘);
5 });

4、最后在终端运行gulp

  点击回车后你会发现控制台打印出了‘hello world’,这说明gulp引入成功。

gulp API 学习

  学习技术当然少不了先了解技术的API文档了,所以我们接下来就学习一个gulp有那么方法。其实使用gulp只需要我们了解4个方法即可。其分别为gulp.task(),gulp.src(),gulp.dest(),gulp.watch();

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



  gulp.task()是用来定义任务;

  name:定义任务名称

  deps :可选参数,当前任务需要依赖的其他任务,为一个数组。如果定义了此参数,那么此任务将会在其他依赖任务都执行完毕后执行。

  fn     :定义任务函数,即此任务需要执行的代码。

定义完成以后我们可以在命令行中输入:gulp <--taskname--> 执行此任务。

例如我们在安装步骤3中定义的一个task,其中default为任务名称,后面的function为任务函数。在命令行中输入:gulp default

注意:default 是gulp的默认任务,所以default可以省略不写。

gulp.src(globs[,options])



  gulp.src()是获取操作文件流(Streams)。但是需要注意的是这个流并不是原始文件流,而是一个虚拟文件对象流,其中存储原始文件路径、文件名称、内容等。此方法返回一个 Streams。

  globs    :文件匹配模式(有点类似于正则表达式)即需要读取文件的url,其作用是匹配文件路径或者文件名;如果有多个匹配模式时,该参数可以为一个数组。

  options :可选参数

举个简单栗子:

1 var gulp=require(‘gulp‘);
2
3 //- 定义任务getFiles
4 gulp.task(‘getFiles‘,function(){
5     gulp.src([‘app/index.html‘,‘app/js/*.js‘]); //- 获取app文件夹下的index.html以及所有app/js下的所有.js文件
6 });

关于参数globs,我这里简单的说一下常用的几种:

  • + *       :匹配路径中的0个或多个字符,但不匹配路径分隔符及‘/‘,除非路径分隔符出现在末尾
  • + **     :匹配路径中的0个或多个目录及其子目录
  • + ?    :匹配路径中的一个字符,但是不匹配路径分隔符
  • +[...] :匹配方括号中出现的字符中的任意一个,当方括号中第一个字符为^或!时,则表示不匹配方括号中出现的其他字符中的任意一个,类似js正则表达式中的用法
  • !(pattern|pattern):匹配任何与括号中给定的任一模式都不匹配的
  • + ?(pattern|pattern):匹配括号中给定的任一模式0次或1次,类似于js正则表达式(pattern|pattern)?
  • + +(pattern|pattern):匹配括号中给定的任一模式至少1次,类似于js正则表达式(pattern|pattern)+
  • + *(pattern|pattern):匹配括号中给定的任一模式0次或多次,类似于js正则表达式(pattern|pattern)*
  • + @(pattern|pattern):匹配括号中给定的任一模式1次,类似于js正则表达式(pattern|pattern)

文件匹配栗子如下:
  + *  能匹配 a.js、b/、c,但不能匹配a/b.js
  + *.* 能匹配 a.js,b.css,c.html,但不能匹配a/b.js
  + */*/*.html 能匹配 a/b/c.html,不能匹配a/b.htmla/b/c/d.html
  + **/*.js 能匹配 a.js,a/b.js,a/b/c.js,a/b/c/a.js 
  + a/**b/c能匹配 a/b/c,a/ab/c,但不能匹配a/c/b/c
  + ?.js能匹配 a.js,a1.js,b2.js
  + a??能匹配 a.cc,acc,但不能匹配acc/
  + [abc].js只能匹配 a.js,b.js,c.js,不会匹配ab.js,abc.js
  + [^ab].js能匹配 d.js,e.js等,不能匹配a.js,b.js

globs还可以接受数组,举栗如下:

  [‘app/*.html‘,‘!app/a.html‘]:匹配app路径下所有html,不含app子文件夹中的,但是排除app/a.html。

  [‘app/*.html‘,‘!app/a*.html‘]:匹配app路径下所有html,不含app子文件夹中的,但是排除app下以a开头的html。

globs还有特别指出就是它支持以{}为定界符的写法。举栗如下:

  a{b,c}d :展开结果是abc、acd

  a{b,}c   :展开结果是ac、abc

  a{0..3}c :展开结果是a0c、a1c、a2c、a3c

gulp.dest(path[,options])



  gulp.dest()方法是生成文件

  path     :生成存储路径;这个路径只能指定生成文件的目录,但不能指定文件名。

  options :可选参数

这个方法需要结合上面介绍的gulp.src()一起使用,简单的流程一般是:

  (1)、通过gulp.src()获取需要处理的文件流,通过管道方法pipe()导入到gulp插件中;

  (2)、插件处理结束后在通过pipe()方法导入到gulp.dest();

  (3)、gulp.dest()将文件流写入文件。

举个栗子:

1 var gulp=require(‘gulp‘);
2 //- copy 文件拷贝
3 gulp.task(‘copy‘, function () {
4     gulp.src(‘app/**/*‘)
5         .pipe(gulp.dest(‘dist/‘));//- 注意此处只是指定生成文件的目录而不是指定生成文件的名称
6 });

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

  gulp.watch()方法是监听文件变化

  glob    : 文件匹配模式。同gulp.src()中的globs相同

  options : 可选参数

  tasks    : 文件变化后需要执行的任务,是一个数组。

举栗如下:

1 var gulp=require(‘gulp‘);
2 gulp.task(‘test‘, function () {
3    console.log(‘文件有变化!!!‘);
4 });
5 gulp.watch(‘app/index.html‘,[‘test‘]);

gulp.watch()还有另外一种用法即:

gulp.watch(glob[,options,callback]);

此方法可以监听到文件发生了什么变化。举栗如下:

1 var gulp=require(‘gulp‘);
2 gulp.watch(‘app/index.html‘, function (event) {
3     var file = {
4         type: event.type, //- 变化类型   added-添加   deleted-删除   changed-修改
5         path: event.path  //- 变化文件路径
6     };
7     console.log(‘文件发生改变‘,file);
8 });

小结:

首先我们了解了gulp的安装;

  需要安装nodejs环境,全局安装使用指令:npm install gulp -g

  项目中安装gulp使用指令:npm install gulp --save-dev

  然后在项目根目录下创建gulpfile.js

其次学习gulp常用的四个方法,分别是:

  声明定义gulp任务的gulp.task();

  获取文件流的gulp.src();

  生成文件的gulp.dest();

  监听文件变化的gulp.watch();

时间: 2024-08-24 05:02:32

前端构建神器之 gulp的相关文章

前端构建工具之gulp的安装和配置

在选择构建工具时,看到更多人推荐gulp,从此入了gulp的坑- 一.安装node环境 百度谷歌一下就有了,在终端中分别输入 node -v 和 npm -v,若显示node和npm的版本号则说明node环境装好了. 二.安装gulp linux下安装全局环境: sudo npm install -g gulp 或cd进入项目目录下安装gulp到项目本地: npm install gulp --save-dev --save-dev的意思是将安装的gulp版本信息写入package.json,更

前端构建工具:gulp的配置与使用

安装gulp 因为gulp是基于node的管理工具,所以要先安装nodejs安装nodejsnodejs下载地址:中文站:http://nodejs.cn/ 英文站:https://nodejs.org/en/下载后直接运行.msi文件安装完成后,打开命令行(win+R)键入node -查看node版本 全局安装gulp npm install -g gulp 在项目目录下安装gulp,若要在安装的时候把gulp写进项目package.json文件的依赖中,则可以加上–save-dev:(项目目

前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上

.table tr>td:nth-child(1){width: 2em !important;padding-left: .6rem !important;padding-right: .6rem !important;} 本文组织结构 理想的前端开发流程 Gulp 为何物 Webpack 又是从哪冒出来的 结论 文章有点长,总共 1800 字,阅读需要 18 分钟.哈哈,没耐心的直接戳我到高潮部分. 理想的前端开发流程 在说构建工具之前得先说说咱期望的前端开发流程是怎样的? 写业务逻辑代码(

记学习前端构建工具gulp的过程,略心酸

初学前端的时候就听过友人说,前端不好学,很多软件都是要自己下载安装插件的,当时是很不以为然的,不就是下载几个软件外加安装插件吗?!怎么会很难呢!后面才发现自己真的错了. 今天刚好准备好好看看前端构建工具gulp的使用,于是乎就各种上网查资料.刚开始的时候有点摸不着头脑,这个东西不是一个软件,拿来就用,需要自己配置环境,自己根据需求安装package,完全是自己DIY的一个工具. 下面就把整个安装过程,记录下来,方便以后查看吧. 先明确几个概念:1.gulp是基于node.js环境下工作的:2.命

前端构建工具gulp.js的使用介绍及技巧

一.gulp的安装 1.首先确保已经安装了node.js的环境,然后以全局的方式安装gulp 全局安装gulp--->>>npm install -g gulp 2.全局安装后,切换到gulp项目中在单独安装一次,将目录切换到gulp项目中去 局域安装gulp--->>>npm install gulp 3.安装依赖,即在安装的时候把gulp写进项目package.json文件的依赖中 npm install --save-dev gulp 二.开始使用gulp 1.和

Gulp.js----比Grunt更易用的前端构建工具

Grunt一直是前端构建工具,然而他也不是毫无缺陷的,gulp的作者 Eric Schoffstall 在他介绍 gulp.js 的 presentation 中总结了 Grunt 的几点不足之处: 插件很难遵守单一职责.因为 Grunt 的 API 设计缺憾,使得许多插件不得不负责一些和其主要任务无关的事情.比如说要对处理后的文件进行更名操作,你可能使用的是 uglify 插件,也有可能使用的是 concat 插件(取决于工作流的最后一个环节是谁). 用插件做一些本来不需要插件来做的事情.因为

(转载)前端构建工具gulp使用

前端构建工具gulp使用 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中文文档 https://github.com/lisposter/gulp-docs-zh-cn Gulp插件网 http://gulpjs.com/plugins/ Awesome Gulp https://github.com/alferov/awesome-gulp StuQ-Gulp实战和原

gulp插件(gulp-jmbuild),用于WEB前端构建

源码地址:https://github.com/jiamao/gulp-jmbuild https://github.com/jiamao/gulp-jmbuild gulp-jmbuild gulp插件,用于WEB前端构建 安装 进入您做为构建工具用的目录 1.首先安装gulp $ npm install -g gulp $ npm install --save-dev gulp 2.安装其它依赖[q/gulp-jshint]. $ npm install q $ npm install gu

(转)前端构建工具gulp入门教程

前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情.那就直接开始吧. 第一步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问http://nodejs.org,然后点击大大的绿色的install按钮,下载完成后直接运行程序,