gulp介绍

1. 网站: http://slides.com/contra/gulp#/

2. 特点

  易于使用:通过代码优于配置的策略, Gulp 让简单的任务简单,复杂的任务可管理。
  构建快速 :利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作。
  插件高质 : Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作。
  易于学习 :通过最少的 API ,掌握 Gulp 毫不费力,构建工作尽在掌握:如同一系列流管道。

1.gulp安装

  前提先安装 nodejs 环境然后在进行如下安装

  1. npm install gulp -g 全局安装
  2.  
  3. npm install gulp --save-dev 安装依赖

如果安装不成功,借助cnpm

2. 初始化工程

1>、mkdir  文件夹名称

2>cd 文件夹名称

3> 创建 package.json 文件

  手动创建或者命令创建
  npm init 输入相关信息

4> 然后发现没有 gulp

  这个时候就需要输入
  npm install gulp --save-dev
  然后出现一个 node_modules/ 文件夹

  (2) 有配置文件的话
  直接输入 npm install 就可以了

3. 创建任务

  通过 gulpfile.js 去创建任务
  在根目录下创建一个 gulpfile.js 的文件
  在文件中写入以下内容

  1.     var gulp = require('gulp');
  2.     gulp.task('hello',function(){
  3.       // 第一个参数是任务名称,第二个参数是任务功能
  4.       console.log('hello world!');
  5.     })

  写完之后呢

  在命令行中输入
  gulp hello 命令执行输出 hello world !

  其他命令我们会在后面介绍
  这里呢我们先介绍一个默认的任务

  1.   gulp.task('default',function(){}) 他也有回调函数,但是呢,但是回调函数,我们可以通过数组来定义
  2.   gulp.task('default',['hello',....]); 数组里放入我们定义的字符串

  然后命令行中输入gulp     就可以执行了//例如上面输  gulp default

4.gulp 基础

  gulp.src().pipe(gulp.dest())
  gulp.src() 方法可以帮助我们找出将要处理的文件,然后 pipe() 去处理这些找到的文件。 pipe() 可以理解为管道,每个管道就可以指定它的功能,最后我们再使用 gulp.dest() 方法把处理好的文件放到指定的地方。

  1>使用 gulp 来实现文件的 copy
首先在我们工程目录下新建一个测试使用的 index.html,然后写入相应的内容
在我们个 gulpfile.js 文件中输入以下内容

  1.   var gulp =require('gulp');
  2.   gulp.task('copy-index',function(){
  3.     //gulp.src() 找到我们的 index.html 然后使用 .pipe() 通道
  4.     //gulp.dist() 发布拷贝
  5.     return gulp.src('index.html').pipe(gulp.dist('dist'));
  6.   });

在我们的命令行中执行gulp copy-index 命令,然后去 dist 目录下验证

复制文件夹下所有jpg图片

  1.   var gulp = require('gulp');
  2.     gulp.task('images',function(){
  3.     return gulp.src('images/*.jpg').pipe(gulp.dest('dist/images'))
  4.   });

  *.jpg 所有格式为jpg的图片

下面再讲一下如何拷贝 images 下面文件夹以及文件夹下文件加入我们想要同时拷贝 jpg , png 文件

  1.   gulp.task('images',function(){
  2.     return gulp.src('images/*.{jpg,png}').pipe(gulp.dest('dist/images'))
  3.   })

  里面不要加空格,/**/* 当前文件夹下所有文件以及子文件下所有文件

两个文件夹同时拷贝到某一个文件夹下

  1.   gulp.task('data',function(){
  2.     return gulp.src(['xml/*.xml','json/*.json']).pipe(gulp.dest('dist/data'));
  3.   })

  排除文件拷贝

  1.   gulp.task('data',function(){
  2.     return gulp.src(['xml/*.xml','json/*.json' '!/json/secret.json']).pipe(gulp.dest('dist/data'));
  3.   })

  !/json/secret.json 排除某个文件

多个任务执行,将上述几个一起执行

  1.   gulp.task('build',['copy-index','images','data'],function(){
  2.     console.log(' 编译成功 ');
  3.   })

  命令行 gulp build 查看效果

2>侦测文件变化

  1.   gulp.task('watch',function(){
  2.     gulp.watch('index.html',['copy-index']);
  3.     gulp.watch('images/**/*.{jpg,png}',['images']);
  4.     gulp.watch(['xml/*.xml','json/*.json','!json/secret.json'],['data']);
  5.   })

  回到命令行执行   gulp watch

  结束  ctrl + C
  回到文件里面改变文件看下效果

5、gulp 插件使用

  访问网站 http://gulpjs.com/plugins

1>、gulp 编译 less
  命令行安装依赖

  1. npm install gulp-less --save-dev

  创建 less 文件,写入内容

  在 gulpfile.js 文件中写入

  1.   var less = require('gulp-less');
  2.   gulp.task('less',function(){
  3.     return gulp.src('stylesheet/**/*.less')
  4.     .pipe(less());
  5.     .pipe(gulp.dest('dist/css'));
  6.   })

2>、gulp-connect 插件搭建本地服务

  命令行安装

  1. npm install gulp-connect --save-dev

  在 gulpfile.js 文件中写入

  1.   var connect= require('gulp-connect');
  2.     gulp.task('sever',function(){
  3.     connect.server();
  4.   })

  启动服务:

  命令行执行 gulp sever

修改文件后页面自动刷新

  1. gulp.task('sever',function(){
  2. //connect.server();
  3. //sever() 方法介绍
  4. // 配置文档根目录
  5. connect.server({
  6. root 'dist'
  7. livereload:true
  8. });
  9. })

然后在我们 copy 任务中添加

  1. gulp.task('copy',function(){
  2. return gulp.src('index.html').pipe(gulp.dest(''))
  3. .pipe(connect.reload());
  4. })

然后在 watch 中添加

  1. gulp.task('watch',function(){
  2. gulp.watch('index.html',['copy']);
  3. })

然后创建一个

  1. gulp.task('default',['server','watch']);

最后执行  gulp default 命令

验证修改文件看下浏览器中是否会自动刷新

3>、合并文件插件 gulp-concat

  命令行安装   npm install gulp-concat --save-dev

在 gulpfile.js

  1. var concat = require('gulp-concat');
  2. gulp.task('scripts',function(){
  3. return gulp.src(['javascripts/avalon.js','javascripts/index.js'])
  4. .pipe(concat('vendor.js'))
  5. .pipe(gulp.dest('dist/js'));
  6. })

4>、将合并 js 文件进行压缩 gulp-uglify

命令行安装   npm install gulp-uglify --save-dev

  1. var uglify = require('gulp-uglify');
  2. gulp.task('scripts',function(){
  3. return gulp.src(['javascripts/avalon.js','javascripts/index.js'])
  4. .pipe(concat('vendor.js'))
  5. .pipe(uglify())//
  6. .pipe(gulp.dest('dist/js'));
  7. })

为了保留前后压缩两个文件
怎么做呢
安装 gulp-rename 插件

命令行安装   npm install gulp-rename --save-dev

  1. var rename = require('gulp-rename');
  2. gulp.task('scripts',function(){
  3. return gulp.src(['javascripts/avalon.js','javascripts/index.js'])
  4. .pipe(concat('vendor.js'))
  5. .pipe(gulp.dest('dist/js'))
  6. .pipe(uglify())
  7. .pipe(rename('vendor.min.js'))
  8. .pipe(gulp.dest('dist/js'));
  9. })

命令行执行    gulp scripts
验证是否生成两个文件

5>、如何压缩 css

命令行安装  npm install gulp-minify-css --save-dev

  1. var minifyCss = require('gulp-minify-css');
  2. gulp.task('less',function(){
  3. return gulp.src('stylesheet/**/*.less')
  4. .pipe(less());
  5. .pipe(minifyCss())
  6. .pipe(uglify())
  7. .pipe(gulp.dest('dist/css'));
  8. })

6>、对图片进行压缩

安装插件 npm install gulp-imagemin --save-dev

  1. var imagemin = require('gulp-imagemin');
  2. gulp.task('images',function(){
  3. return gulp.src('images/**/*')
  4. .pipe(imagemin())
  5. .pipe(gulp.dest('dist/images'))
  6. })

执行命令   gulp images

6>、监听文件,浏览器自动刷新

  安装插件 npm install gulp-livereload --save-dev

  1. var less = require("gulp-less"); //less编译
  2. var livereload = require('gulp-livereload'); //自动刷新
  3.  
  4. gulp.task('compile-less', function() {
  5. gulp.src('style/less/*.less') //less编译
  6. .pipe(less())
  7. .pipe(gulp.dest('style/css'))
  8. .pipe(livereload());
  9.  
  10. });
  11. gulp.task('watch', function() {
  12. livereload.listen(); //要在这里调用listen()方法
  13. gulp.watch('style/less/*.less', ['compile-less']); //监听目录下的文件,若文件发生变化,则调用less任务。
  14. gulp.src('index.html')
  15. .pipe(livereload());
  16. });
  17. //当代码变化时,它可以帮助我们自动刷新页面,该插件最好配合谷歌浏览器,且要安装livereload chrome extension扩展插件,否则无效。

gulp 功能呢暂时讲到这里还有很多内容可以参考官网进行学习

更详细gulp入门地址 http://www.ydcss.com/archives/18

前端自动化gulp使用方法的更多相关文章

  1. 前端自动化gulp遇上es6从 无知到深爱

    Gulp是什么? Gulp是前端自动化的工具,但Gulp能用来做什么 1.搭建web服务器 2.使用预处理器Sass,Less 3.压缩优化,可以压缩JS CSS Html 图片 4.自动将更新变化的 ...

  2. 前端自动化-----gulp详细入门(转)

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

  3. 前端自动化Gulp工具常用插件

    npm init命令初始化当前文件夹后,在当前文件夹新建gulpfile.js文件.当前目录下的所有操作流都在gulpfile.js文件中定义. gulp自动化 gulp-uglify (JS压缩) ...

  4. 前端自动化-gulp入门

    前不久本人写了一篇关于gulp安装和配置的文章,其实当时还是懵逼的状态,但是今天再次温习了一遍,感觉对整个流程有个整体的理解了,下面以一个实例给大家分享下我的经验供参考和学习. 1.首先安装nodej ...

  5. 前端自动化工具 -- gulp https://angularjs.org/

    gulp是基于流的前端自动化构建工具. gulp是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用. 同样的,也是包括基本用法和各插件的使用. 二.基本用法--插件使用 gu ...

  6. 前端自动化工具gulp自动添加版本号

    之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...

  7. 学习安装并配置前端自动化工具Gulp

    Gulp和所有Gulp插件都是基于nodeJs来运行的,因此在你的电脑上需要安装nodeJs,安装过程请移驾安装并配置前端自动化工具--grunt.安装完成后,通过运行cmd进入DOS命令窗口,如图: ...

  8. Node.js前端自动化工具:gulp

    前端自动化工具 -- gulp 使用简介 gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是 ...

  9. 前端自动化工具 -- Gulp 使用简介

    gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用 ...

随机推荐

  1. php versionscan YAF

    https://github.com/psecio/versionscan   Yaf 的特点: 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 所有的框架类, 不需要编 ...

  2. 从Mybatis中#和$的区别到SQL预编译

    #和$的区别 Mybatis中参数传递可以通过#和$设置.它们的区别是什么呢? # Mybatis在解析SQL语句时,sql语句中的参数会被预编译为占位符问号? $ Mybatis在解析SQL语句时, ...

  3. P4999烦(gui)人(chu)的数学作业

    P4399P4999 这是一道有着三倍经验的宝藏题目 我们可以求出来1到n中,1~9分别出现了几次,设f[i]为数字i出现的次数,则\(ans=\sum{f[i]\cdot i}\) 然后就是数位dp ...

  4. 职位-CTO:CTO

    ylbtech-职位-CTO:CTO 首席技术官是技术资源的行政管理者,英文为Chief Technical Officer或Chief Technology Officer,简称CTO.其职责是制订 ...

  5. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_13_静态static关键字修饰成员方法

    static关键字 用来修饰方法的情况 任何使用这个静态方法呢? 可以直接通过对象名称的方式进行调用. 更好的写法是通过类名称进行调用. 分别定义成员变量和静态变量 静态方法里面不能用this

  6. Delphi中堆栈区别

     http://blog.csdn.net/zang141588761/article/details/52838728 Delphi中堆栈区别 2016-10-17 14:49 277人阅读 评论( ...

  7. 06 使用bbed提交delete的数据--01

    使用bbed模拟delete提交操作 --session 1 TEST@ orcl )); Table created. TEST@ orcl ,'AAAAA'); row created. TEST ...

  8. javascript实现保留两位小数的多种方法

    第一种方法:javascript实现保留两位小数一位自动补零代码实例:第一种方法介绍一下如何实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零,这个也是为了统一的效果,先 ...

  9. 自动化测试--利用opencv进行图像识别与定位

    SIFT检测方法 SIFT算法就是把图像的特征检测出来,通过这些特征可以在众多的图片中找到相应的图片 import cv2 #读取图片,以1.png为例 img=cv2.imread('1.png') ...

  10. Dynamic Programming and Policy Evaluation

    Dynamic Programming divides the original problem into subproblems, and then complete the whole task ...