gulp 工具入门指南

gulp 是一款实用的前端自动化构建工具,能够自动执行编译 scss 和 less,压缩 html、css、js 和 img,检测文件改变同时刷新浏览器等常见的前端任务,提高工作效率;

gulp_logo.png

1、安装 node.js

  • 因为 gulp 是基于 Node.js 构建的,所以要使用 gulp 计算机要先安装 node.js
  • 下载完安装包后,运行并一直点下一步就能安装完成;
  • 打开控制台,输入node -v 查看到版本号则安装成功;

2、全局安装 gulp

  • 在命令行输入:$ npm install gulp-cli -g
  • 完成之后输入:$ gulp -v
  • 查看到版本号则安装成功;

3、初始化项目

在项目根目录输入:$ npm init
初始化完成会生成一个 package.json 文件,里面记录了对该项目的描述

package.json 属性说明

  • name:项目名
  • version:项目版本
  • description:项目描述
  • homepage:项目网站 url
  • auther:作者信息(可以放在对象里)
  • contributors:其他贡献者姓名
  • dependencies:依赖包列表
  • devDependencies:开发环境依赖包列表
  • respository:包的仓库信息(一个包含 type 和 url 属性的对象,type 指 svn 或 git)
  • main:模块 ID,一个指向你程序的主要项目
  • keywords:关键字

4、局部安装 gulp

切换到项目根目录,输入:

$ npm install gulp --save-dev //或者向下面一样
$ npm install gulp -D
  • -D 是 --save-dev 的缩写,两者意思完全一样(会将依赖信息添加到 package.jsondevDependencies 中)
  • 如果只写 --save(缩写为 -S),不加 -dev 则将依赖信息添加到 package.jsondependencies 中(一般保存在这里的是 express/ejs/body-parser 等等)

5、使用 gulp

使用 gulp 必须要会 Gulp API

  • package.json 同级目录下创建一个 gulpfile.js 文件;
  • gulpfile.js 文件中可以开始设置 gulp 流程:
var gulp = require('gulp'); //载入 gulp
gulp.task('default', function() {
  // 编写默认任务
});
  • 运行 gulp
$ gulp

gulp 后面不加任何参数则执行默认任务

6、gulp 常用插件

js 压缩插件:gulp-uglify

安装:

$ npm install --save-dev jshint gulp-jshint

使用:

var gulp = require('gulp');  //加载gulp
var jsmini= require('gulp-uglify');  //加载 js 压缩插件
gulp.task('jsmini', function () {
    gulp.src('app/script/js/*.js') // 获取文件,且 base 指向 app/script
        .pipe(jsmini()) // 压缩
        .pipe(gulp.dest('minijs/')); // 输出
});

小技巧:可以在文件路径前面加「!」来过滤掉不想操作的文件,!感叹号为排除模式。

css 压缩:gulp-minify-css

安装:

$ npm install --save-dev gulp-minify-css

使用:

var gulp = require('gulp');
var cssmini = require('gulp-minify-css');
gulp.task('cssmini', function () {
    gulp.src('app/style/css/*.css')
        .pipe(cssmini())
        .pipe(gulp.dest('minicss/'));
});

html 压缩:gulp-minify-html

安装:

$ npm install --save-dev gulp-minify-html

使用:

var gulp = require('gulp');
var htmlmini = require('gulp-minify-html');
gulp.task('htmlmini', function () {
    gulp.src('app/views/html/*.html')
        .pipe(htmlmini())
        .pipe(gulp.dest('minihtml/'));
});

js 代码检查:gulp-jshint

安装:

$ npm install --save-dev gulp-jshint

使用:

var gulp = require('gulp');
var jshint= require('gulp-jshint');
gulp.task('jshint', function () {
    gulp.src('app/script/js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter());
});

文件合并:gulp-concat

安装:

$ npm install --save-dev gulp-concat

使用:

var gulp = require('gulp');
var concat= require('gulp-concat');
gulp.task('concat', function () {
    gulp.src('app/script/js/*.js') // 要合并的文件
        .pipe(concat('all.js')) // 合并匹配的文件并命名为 all.js
        .pipe(gulp.dest('dist/js'));
});

编译 Less:gulp-less

安装:

$ npm install --save-dev gulp-less

使用:

var gulp = require('gulp');
var less= require('gulp-less');
gulp.task('compile-less', function () {
    gulp.src('less/*.less')
        .pipe(less())
        .pipe(gulp.dest('dist/css'));
});

编译 Sass:gulp-sass

安装:

$ npm install --save-dev gulp-sass

使用:

var gulp = require('gulp');
var sass= require('gulp-sass');
gulp.task('compile-sass', function () {
    gulp.src('sass/*.sass')
        .pipe(sass())
        .pipe(gulp.dest('dist/css'));
});

压缩图片:gulp-imagemin

安装:

$ npm install --save-dev gulp-imagemin

使用:
可压缩 jpg、png、gif 等图片,压缩不同的图片要安装不同的 imagemin 插件
本例使用 png 压缩插件

$npm install --save-dev imagemin-pngquant

gulpfile.js

var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var pngquant = require('imagemin-pngquant');
gulp.task('pngmin', function () {
    return gulp.src('app/images/*')
        .pipe(imagemin({
            progressive: true,
            use: [pngquant()] //使用pngquant来压缩png图片
        }))
        .pipe(gulp.dest('dist'));
});

自动刷新:gulp-livereload

安装:

$ npm install --save-dev gulp-livereload

使用:
需配合 chrome LiveReload 扩展插件使用
实现所监控文件代码变化时自动刷新页面的功能

var gulp = require('gulp'),
    less = require('gulp-less'),
    livereload = require('gulp-livereload');
gulp.task('less', function() {
  gulp.src('less/*.less')
    .pipe(less())
    .pipe(gulp.dest('css'))
    .pipe(livereload());
});
gulp.task('watch', function() {
  livereload.listen(); //要在这里调用listen()方法
  gulp.watch('less/*.less', ['less']);  //监听目录下的文件,若文件发生变化,则调用less任务。
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容