天天看点

使用gulp时常用的插件介绍及用法

可供使用的插件:

编译

gulp-sass

- 通过 libsass将Sass编译成 CSS

gulp-ruby-sass

- 通过 Ruby Sass将Sass编译成CSS

gulp-compass

- 通过 Ruby Sass和CompassSass编译成CSS

gulp-less

- Less编译成 CSS.

gulp-stylus

- Stylus 编译成 CSS.

gulp-postcss

- Pipe CSS 通过 PostCSS processors with a single parse.

gulp-coffee

- Coffeescript 编译成 JavaScript.

gulp-typescript

- TypeScript编译成JavaScript.

gulp-react

- Facebook React JSX 模板编译成JavaScript.

webpack-stream

- 将webpack集成在Gulp中使用。

gulp-babel

- ES6编译成ES5 通过 babel.

gulp-traceur

- ES6编译成ES5 通过 Traceur.

gulp-regenerator

- ES6编译成ES5 通过 Regenerator.

gulp-myth

- Myth - a polyfill for future versions of the CSS spec.

合并

gulp-concat

- 合并文件.

压缩

gulp-clean-css

- 压缩 CSS 通过 clean-css.

gulp-csso

- 压缩 CSS 通过 CSSO.

gulp-uglify

- 压缩 JavaScript 通过 UglifyJS2.

gulp-htmlmin

- 压缩 HTML 通过 html-minifier.

gulp-minify-html

- 压缩 HTML 通过 Minimize(包已被弃用,建议使用gulp-htmlmin)

gulp-imagemin

- 压缩 PNG, JPEG, GIF and SVG 图片 通过 imagemin.

gulp-svgmin

- 通过Gulp压缩 SVG 文件

优化

gulp-uncss

- 移除未使用的CSS选择器通过 UnCSS.

gulp-css-base64

- 将CSS文件中所有的资源(有url()声明的)变成base64-encoded 数据的URI字符串

gulp-svg2png

- 将SVGs转换成PNGs

gulp-responsive

- 生成不同尺寸的图片

gulp-svgstore

-将svg files 合并成一个通过 元素

gulp-iconfont

- 通过SVG icons创建 icon fonts

资源注入

gulp-useref

- 解析HTML文件中特殊标签里面的script或style标签,合并成一个script或css文件,并替换。

gulp-inject

- 将指定的css或js文件以标签的形式插入到HTML中的指定标志内。

wiredep

- 将Bower依赖自动注入HTML文件中。

模板

gulp-angular-templatecache

- 在$templateCache中联系并注册AngularJS模板

gulp-jade

- Jade 转换成 HTML.

gulp-handlebars

- Handlebars模板转换成 JavaScript.

gulp-hb

- Handlebars 模板转换成 HTML.

gulp-nunjucks

- Nunjucks模板转换成JavaScript.

gulp-dustjs

- Dust模板转换成JavaScript.

gulp-riot

- Riot模板转换成JavaScript.

gulp-markdown

- Markdown → HTML.

gulp-template

- Lodash 模板转换成JavaScript.

gulp-swig

- Swig模板转换成HTML.

gulp-remark

- Gulp plugin for [remark]的Gulp插件(https://github.com/wooorm/remark) 通过插件处理markdown

代码校验

gulp-csslint

- 通过CSSLint自动校验CSS.

gulp-htmlhint

- 通过HTMLHint校验HTML.

gulp-jshint

- 通过JSHint发现错误和潜在的问题.

gulp-jscs

- 通过jscs检查JavaScript代码风格.

gulp-coffeelint

- 一种用来保证CoffeeScript代码风格统一的检查。

gulp-tslint

- gulp的TypeScript代码校验插件.

gulp-eslint

- ECMAScript/JavaScript代码校验.

gulp-w3cjs

- 通过w3cjs检验HTML.

gulp-lesshint

- 通过lesshint校验LESS.

实时加载

browser-sync

- 保证多个浏览器或设备网页同步显示 (recipes).

gulp-livereload

- Gulp的实时加载插件.

缓存

gulp-changed

- 仅让发生改变的文件通过.

gulp-cached

- 一个简单的文件内存缓存.

gulp-remember

- 记忆并回收通过了的文件.

gulp-newer

- 只让新的源码通过.

流控制

merge-stream

- 合并多个流到一个插入的流.

streamqueue

- 逐渐输入队列的流.

run-sequence

- 按要求运行一些依赖的Gulptask.

gulp-if

- 按照条件运行task.

日志

gulp-notify

- Gulp的通知插件.

gulp-size

- 显示你的项目的大小.

gulp-debug

- 通过调试文件流来观察那些文件通过了你的Gulp管道.

测试

gulp-mocha

- 运行Mocha测试用例.

gulp-jasmine

- 在Node.js中运行Jasmine 2 测试用例.

gulp-protractor

- 为Protractor测试用例包裹Gulp.

gulp-coverage

- 为Node.js覆盖相对于运行的测试运行独立的报告.

gulp-karma

- 通过Gulp运行Karma测试用例.

gulp-ava

- 通过Gulp运行AVA 测试用例.

其他插件

gulp-util

- 包含一系列有用插件.

gulp-plumber

- 防止错误引起管道中断Prevent pipe breaking caused by errors.

gulp-load-plugins

- 自动加载Gulp插件.

main-bower-files

- 构建时自动获取bower库的文件.

autoprefixer

- 解析CSS且根据规则添加浏览器兼容性前缀.

gulp-sourcemaps

- 提供source map支持.

gulp-replace

- Gulp的一个字符串替换插件.

gulp-rename

- 轻松重命名文件.

gulp-rev

- 在静态文件名的后面添加hash值,如: unicorn.css → unicorn-d41d8cd98f.css.

del

- 使用globs删除文件/文件夹.

gulp-exec

- 运行一个shell命令.

gulp-strip-debug

- 除去javascript代码中的console,alert,debugger声明.

gulp-cssimport

- 解析CSS文件,找到imports,将连接文件替换成imort声明.

gulp-inline-css

- 将HTML中的css属性放到style标签中.

gulp-gh-pages

- 将内容发布到GiHub有页面.

gulp-ng-annotate

- 通过ng-annotate添加Angular依赖注入.

gulp-bump

- 通过Gulp Bump任何semvar JSON版本.

gulp-file-include

- 通过Gulp Include文件.

gulp-zip

- 以ZIP格式压缩文件.

gulp-git

- 通过Gulp运行git命令.

gulp-filter

- 使用globbing过滤文件.

gulp-preprocess

- 基于自定义内容或环境配置预处理文件.

常用插件用法介绍:

1、gulp: 测试、检查、合并、压缩、格式化、部署,监听,优化网页性能。

首先抛出一个问题:我们为什么用gulp?首先先问自己一个问题:平时用sass/less写css,用jade写/html代码,那么这些文件的的测试、检查、合并、压缩、格式化、部署,监听。应该怎么完成呢?就来压缩合并来讲,可以减少多个css,js文件请求,优化网页性能,这样的工作是否应该有一个很好的解决方案呢?—答案就是gulp

使用npm进行安装:

npm install gulp -g  //全局安装gulp
npm install gulp --save  //本地安装gulp
           

使用方法:

gulp有4个属性,即src,dest,watch,task:

gulp.task(name[, deps], fn)//定义一个使用 Orchestrator 实现的任务(task)。name:任务的名字,如果你需要在命令行中运行你的某些任务,那么,请不要在名字中使用空格。deps:类型: Array,一个包含任务列表的数组,这些任务会在你当前任务运行之前完成。fn:该函数定义任务所要执行的一些操作。

 gulp.src(globs[, options])  //输出(Emits)符合所提供的匹配模式(glob)或者匹配模式的数组(array of globs)的文件,globs类型: String 或 Array

注意:
gulp.src('./src/css/*.css')中有第二个参数base,可以指定基础路径,如果不设置,则默认基础路径为 * 之前的路径。
base:'./src/css'
如果设置了 gulp.src('./src/css/*.css',{base:'./'})
则base是'./'
gulp.dest('./dist/css')传入的参数就是base路径
base:'./dist/css'
举个栗子来解释什么是替换
gulp.src('./src/css/*.css').pipe().pipe(gulp.dest('./dist/css'));
那么最后文件处理完成的最终路径是./dist/css/*.css
如果是gulp.src('./src/css/*.css',{base:'./'}).pipe().pipe(gulp.dest('./dist/css'));
那么最后文件处理完成的最终路径是./dist/css/src/css/*.css


 gulp.dest(path[, options]) //能被 pipe 进来,并且将会写文件。并且重新输出(emits)所有数据,因此你可以将它 pipe 到多个文件夹。如果某文件夹不存在,将会自动创建它。path类型: String or Function

 gulp.watch(glob[, opts], tasks)//监视文件,并且可以在文件发生改动时候做一些事情。glob:类型: String or Array,tasks:类型: Array
           

2、gulp-sass: 通过 libsass将Sass编译成 CSS

使用npm进行安装:

使用方法:

1.编译sass文件夹下的scss类型的文件为css文件的写法:

'use strict';
var gulp = require('gulp');//引入gulp
var sass = require('gulp-sass');//引入gulp-sass
gulp.task('sass', function () {   //创建sass任务名
  return gulp.src('./sass/**/*.scss')  //读取"./sass/**/"目录下的所有scss类型文件
    .pipe(sass().on('error', sass.logError)) //调用sass方法编译成css文件并打印错误日志,sass()方法用于转换sass到css
    .pipe(gulp.dest('./css')); //将生成的css文件放到"./css"文件夹下
});
gulp.task('sass:watch', function () {  //监听sass文件的变化
  gulp.watch('./sass/**/*.scss', ['sass']); //在sass任务执行之后,监听./sass/**/下的所有scss类型文件
});
           

2.同步编译转换的写法:

'use strict';
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
  return gulp.src('./sass/**/*.scss')
    .pipe(sass.sync().on('error', sass.logError)) //调用sass.sync方法同步编译成css文件并打印错误日志
    .pipe(gulp.dest('./css'));
});
gulp.task('sass:watch', function () {//监听sass文件的变化
  gulp.watch('./sass/**/*.scss', ['sass']);
});
           

3、gulp-less:Less编译成 CSS

使用

gulp-less

插件将less文件编译成css,当有less文件发生改变自动编译less,并保证less语法错误或出现异常时能正常工作并提示错误信息。

使用npm进行安装:

npm install gulp-less --save-dev
           

使用方法:

1.编译less类型的文件为css文件的写法:

var gulp=require('gulp'),//引入gulp
var less=require('gulp-less');//引入gulp-less
gulp.task('testLess',function(){  //创建testLess任务名
    gulp.src('src/less/index.less') //读取"src/less/"目录下的所有index.less类型文件
        .pipe(less())  //调用less()将less文件转换成css文件
        .pipe(gulp.dest('src/css')); 将生成的css文件放到"src/css"文件夹下
});
           

2.编译多个less类型文件的写法:

var gulp=require('gulp'),
var less=require('gulp-less');
gulp.task('testLesslist',function(){
    gulp.src(['src/index.less','src/less/detail.less'])//多个文件以数组形式传入
        .pipe(less())
        .pipe(gulp.dest('src/css'));//将会在src/css下生成index.css以及detail.css
});
           

4、gulp-stylus: Stylus 编译成 CSS

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp');//引入gulp
var stylus = require('gulp-stylus');//引入gulp-stylus
gulp.task('one', function () {//创建one任务
  return gulp.src('./css/one.styl')//读取"./css/"文件夹下one.styl文件
    .pipe(stylus()) //调用stylus方法转换成css
    .pipe(gulp.dest('./css/build'));//css文件放到"./css/build"目录下
});
           

2.

gulp-stylus

压缩生成的

css

gulp.task('compress', function () {
  return gulp.src('./css/compressed.styl')
    .pipe(stylus({
      compress: true //需要压缩
    }))
    .pipe(gulp.dest('./css/build'));
});
           

5、gulp-clean-css:编译css后压缩,一般都要压缩,用gulp-clean-css 压缩 CSS

使用

gulp-clean-css

压缩css文件,减小文件大小,并给引用url添加版本号避免缓存。(之前的有同样功能的

gulp-minify-css

已被废弃)

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp'), //引入gulp
var cssmin = require('gulp-clean-css'); //引入gulp-clean-css
gulp.task('testCssmin', function () { //创建testCssmin任务
    gulp.src('src/css/*.css') //读取"src/css/"文件夹下所有的css文件
        .pipe(cleanCSS()) //调用cleanCSS方法压缩css
        .pipe(gulp.dest('dist/css')); //压缩的css文件放到"dist/css"目录下
});
           

2.cssmin方法更多参数使用:

var gulp = require('gulp'),
    cssmin = require('gulp-clean-css');
gulp.task('testCssmin', function () {
    gulp.src('src/css/*.css')
        .pipe(cleanCSS({
            advanced: false, //类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
            compatibility: 'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
            keepBreaks: true,//类型:Boolean 默认:false [是否保留换行]
            keepSpecialComments: '*'//保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀
        }))
        .pipe(gulp.dest('dist/css'));
});
           

6、gulp-csso: 压缩 CSS 通过 CSSO

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp');//引入gulp
var csso = require('gulp-csso');//引入gulp-csso

gulp.task('default', function () { //创建default任务
    return gulp.src('./main.css')//读取"./main.css"文件
        .pipe(csso())//调用csso方法压缩css
        .pipe(gulp.dest('./out'));//压缩的css文件放到"./out"目录下
});
           

7、gulp-coffee: Coffeescript 编译成 JavaScript

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp'); //引入gulp
var coffee = require('gulp-coffee');//引入gulp-coffee
gulp.task('coffee', function() { //创建coffee任务
  gulp.src('./src/*.coffee')//读取"./src"文件夹下所有的coffee文件
    .pipe(coffee())//调用coffee方法转换成js
    .pipe(gulp.dest('./public/'));//js文件放到"./public"目录下
});
           

8、gulp-typescript: typeScript编译成JavaScript

使用npm进行安装:

npm install --global gulp-cli
npm install gulp
npm install gulp-typescript typescript
           

使用方法:

1.基本写法:

var gulp = require('gulp');//引入gulp
var ts = require('gulp-typescript');//引入gulp-typescript
gulp.task('default', function () {//创建default任务
    return gulp.src('src/**/*.ts')//读取"src/**"文件夹下所有的ts文件
        .pipe(ts({
            noImplicitAny: true, 
            outFile: 'output.js' //输出文件名为"output.js"
        }))
        .pipe(gulp.dest('built/local'));//js文件放到"built/local"目录下
});
           

9、gulp-uglify: 通过 UglifyJS2压缩 JavaScript(一般js都要压缩)

使用gulp-uglify压缩javascript文件,减小文件大小。

使用npm进行安装:

使用方法:

1.基本写法:

var gulp=require('gulp'),  //引入gulp
var uglify=require('gulp-uglify');  //引入gulp-uglify
gulp.task('jsmin',function(){  //创建jsmin任务
    gulp.src('src/js/index.js')  //读取"src/js/index.js"文件
        .pipe(uglify())  //调用uglify压缩js文件
        .pipe(gulp.dest('dist/js'));  //压缩后的文件放到"dist/js"文件夹下
});
           

2.压缩多个js文件

var gulp=require('gulp'),  
var uglify=require('gulp-uglify');  
gulp.task('jsmin',function(){  
    gulp.src(['src/js/index.js','src/js/detail.js'])//多个文件以数组形式传入  
        .pipe(uglify())  
        .pipe(gulp.dest('dist/js'));  
});  
           

3.带参数的使用

var gulp=require('gulp'),  
    uglify=require('gulp-uglify');  
gulp.task('jsmin',function(){  
    //压缩src/js目录下的所有js文件  
    //除了test1.js和test2.js(**匹配src/js的0个或多个子文件夹)  
    gulp.src(['src/js/*.js','!src/js/**/{test1,test2}.js'])  
        .pipe(uglify({  
            mangle:true,//类型:Boolean 默认:true 是否修改变量名  
            compress:true,//类型:Boolean 默认:true 是否完全压缩  
            preserveComments:'all'//保留所有注释  
        }))  
        .pipe(gulp.dest('dist/js'));  
}); 
           

10、gulp-babel:ES6编译成ES5 通过 babel

使用npm进行安装:

npm install --save-dev gulp-babel @babel/core @babel/preset-env
           

使用方法:

1.基本写法:

const gulp = require('gulp');
const babel = require('gulp-babel');

gulp.task('default', () =>
    gulp.src('src/app.js') //读取"src/app.js"app.js文件
        .pipe(babel({
            presets: ['@babel/env']//presets字段设定转码规则
        }))
        .pipe(gulp.dest('dist'))//js文件放到"dist"目录下
);

           

11、gulp-concat: 合并文件,用来减少网络请求。

使用npm进行安装:

使用方法:

1.合并某个文件夹下的所有此类型的文件写法:

var gulp = require('gulp');//引用gulp
var concat = require('gulp-concat');//引入gulp-concat插件
gulp.task('scripts', function() {//创建名为“scripts”的task
  return gulp.src('./lib/*.js')  //读取lib文件夹下的所有js文件
    .pipe(concat('all.js'))   //将读取的所有js文件合并到all.js文件中
    .pipe(gulp.dest('./dist/'));  //将输出的all.js文件放到dist文件夹下,即“./dist/all.js”
});
           

2.合并特定文件的写法:

var concat = require('gulp-concat');
gulp.task('scripts', function() {
  return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js'])//读取多个特定的文件合并
    .pipe(concat('all.js'))
    .pipe(gulp.dest('./dist/'));
});
           

12、gulp-replace: gulp的一个字符串替换插件

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp');//引用gulp
var replace = require('gulp-replace');//引入gulp-replace插件
gulp.task('templates', function(){
  gulp.src(['file.txt']) //读取file.txt文件
    .pipe(replace('bar', 'foo')) //用foo替换bar
    .pipe(gulp.dest('build/'));//将file.txt内容替换后放到"build/"文件夹
});
           

13、gulp-htmlmin: 压缩 HTML 通过 html-minifier

使用gulp-htmlmin压缩html,可以压缩页面javascript、css,去除页面空格、注释,删除多余属性等操作。

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp');//引用gulp
var htmlmin = require('gulp-htmlmin');//引入gulp-htmlmin插件
gulp.task('minify', function() {
  return gulp.src('src/*.html')//读取src下的所有html文件
    .pipe(htmlmin({collapseWhitespace: true})) collapseWhitespace: true,//压缩HTML
    .pipe(gulp.dest('dist'));//将输出文件放到dist文件夹下
});
           

2.多参数的用法:

var gulp = require('gulp'),
    htmlmin = require('gulp-htmlmin');
gulp.task('testHtmlmin', function () {
    var options = {
        removeComments: true,//清除HTML注释
        collapseWhitespace: true,//压缩HTML
        collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />
        removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
        removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
        minifyJS: true,//压缩页面JS
        minifyCSS: true//压缩页面CSS
    };
    gulp.src('src/html/*.html')
        .pipe(htmlmin(options))
        .pipe(gulp.dest('dist/html'));//将输出文件放到dist/html文件夹下
});
           

14、gulp-imagemin:压缩 PNG, JPEG, GIF and SVG 图片 通过 imagemin

使用gulp-imagemin压缩图片文件(包括PNG、JPEG、GIF和SVG图片)

使用npm进行安装:

使用方法:

1.基本写法:

var gulp = require('gulp'),//引用gulp
    imagemin = require('gulp-imagemin');//引入gulp-imagemin插件

gulp.task('testImagemin', function () {
    gulp.src('src/img/*.{png,jpg,gif,ico}')//读取src/img下的所有png,jpg,gif,ico后缀名的文件
        .pipe(imagemin()) //调用imagemin方法压缩图片
        .pipe(gulp.dest('dist/img'));//将输出文件放到dist/img文件夹下
});
           

2.多参数的用法:

var gulp = require('gulp'),
    imagemin = require('gulp-imagemin');

gulp.task('testImagemin', function () {
    gulp.src('src/img/*.{png,jpg,gif,ico}')
        .pipe(imagemin({
            optimizationLevel: , //类型:Number  默认:3  取值范围:0-7(优化等级)
            progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
            interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染
            multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化
        }))
        .pipe(gulp.dest('dist/img'));
});
           

3.深度压缩图片:

var gulp = require('gulp'),
    imagemin = require('gulp-imagemin'),
    //确保本地已安装imagemin-pngquant [cnpm install imagemin-pngquant --save-dev]
    pngquant = require('imagemin-pngquant');
gulp.task('testImagemin', function () {
    gulp.src('src/img/*.{png,jpg,gif,ico}')
        .pipe(imagemin({
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],//不要移除svg的viewbox属性
            use: [pngquant()] //使用pngquant深度压缩png图片的imagemin插件
        }))
        .pipe(gulp.dest('dist/img'));
});
           

4.只压缩修改的图片。压缩图片时比较耗时,在很多情况下我们只修改了某些图片,没有必要压缩所有图片,使用”gulp-cache”只压缩修改的图片,没有修改的图片直接从缓存文件读取(C:\Users\Administrator\AppData\Local\Temp\gulp-cache)。

var gulp = require('gulp'),
    imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant'),
    //确保本地已安装gulp-cache [cnpm install gulp-cache --save-dev]
    cache = require('gulp-cache');
    gulp.task('testImagemin', function () {
    gulp.src('src/img/*.{png,jpg,gif,ico}')
        .pipe(cache(imagemin({
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [pngquant()]
        })))
        .pipe(gulp.dest('dist/img'));
});
           

文章参考:

https://github.com/Pines-Cheng/awesome-gulp-cn awesome-gulp中文版

http://blog.csdn.net/yczz/article/details/52190251 gulp教程之gulp-less

http://blog.csdn.net/wu_xiaozhou/article/details/52865047 gulp常用插件-gulp-clean-css

http://blog.csdn.net/xuanjiewu/article/details/53318245 gulp教程之gulp-uglify(压缩文件)

http://www.ydcss.com/archives/20 gulp教程之gulp-htmlmin

http://blog.csdn.net/u013063153/article/details/52628506 gulp教程之gulp-imagemin