1.安装准备

1.1 Node.js安装

在安装Gulp之前首先的安装Node.js,

安装教程详见Node.js 安装配置

1.2 npm安装

在安装node的时候会自动安装npm模块管理器,详见npm模块管理器

win+r输入cmd打开命令终端

  • node -v查看所安装的node的版本号
  • npm -v查看所安装的npm的版本号

用win系统终端命令进入项目根目录

  1. d: 进入d盘
  2. dir d盘下文件列表
  3. cd www 进入www文件夹,直至根目录
  4. cd .. 退回上一级文件夹

2. 安装Gulp

2.1 全局安装

在全局安装gulpnpm install gulp -g

2.2 新建package.json文件

npm init 配置package.json文件

2.3 本地安装

进入项目根目录再安装一遍npm install gulp --save-dev

3. 安装插件

我们将要使用Gulp插件来完成以下任务:

  • less的编译(gulp-less)
  • 压缩js代码(gulp-uglify)
  • 压缩css(gulp-minify-css)
  • 压缩html(gulp-minify-html)
  • 压缩图片(gulp-imagemin)
  • 图片缓存(gulp-cache)
  • 文件重命名(gulp-rename)
  • 更改提醒(gulp-notify)
  • 清除文件(del)

安装以上插件

4. 新建gulpfile.js文件

说明:gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件

//导入工具包 require('node_modules里对应模块')
var gulp = require('gulp'); //本地安装gulp所用到的地方
var less = require('gulp-less'); // 获取 gulp-less 模块(用于编译Less)
var jsmin = require('gulp-uglify'); //JS文件压缩
var cssmin = require('gulp-minify-css'); //css文件压缩
var htmlmin = require('gulp-minify-html'); //html文件压缩
var cache = require('gulp-cache'); //图片缓存
var imgmin = require('gulp-imagemin'); //图片压缩
var notify = require('gulp-notify'); //更动通知
var rename = require('gulp-rename'); //重命名
var del = require('del');
//var sass = require('gulp-ruby-sass'); //编译SASS
// var jshint = require('gulp-jshint'); //js代码检查
// var contact = require('gulp-contact'); //合并js或css文件等 //gulp.task(name[, deps], fn) 定义任务 name:任务名称 deps:依赖任务名称 fn:回调函数
//gulp.src(globs[, options]) 执行任务处理的文件 globs:处理的文件路径(字符串或者字符串数组)
//gulp.dest(path[, options]) 处理完后文件生成路径
//gulp.watch(glob[, opts], tasks) 监视文件,并且可以在文件发生改动时候做一些事情。 //定义一个less任务(自定义任务名称)
// 编译Less ,在命令行项目目录下使用 gulp less 启动此任务
// gulp.task('less', function () {
// gulp.src('docs/*/less/*.less') //该任务针对的文件
// .pipe(less()) //该任务调用的模块
// .pipe(gulp.dest('dist/css')) //将会在dist/css下生成对应的css文件
// .pipe(notify({ message: 'less task complete' }));
// }); //css文件压缩,在命令行项目目录下使用 gulp cssmin 启动此任务
gulp.task('cssmin', function () {
gulp.src('docs/*/css/*.css')
.pipe(cssmin({
advanced: false,//类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
compatibility: 'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
keepBreaks: false//类型:Boolean 默认:false [是否保留换行]
}))
.pipe(rename({ suffix: '.min' })) //对压缩后的文件重命名
.pipe(gulp.dest('dist'))
.pipe(notify({ message: 'cssmin task complete' }));
}); // js文件压缩 ,在命令行项目目录下使用 gulp jsmin 启动此任务
gulp.task('jsmin', function() {
gulp.src('docs/**/js/*.js') // 1. 找到文件
.pipe(jsmin()) // 2. 压缩文件
.pipe(rename({extname:'.min.js'})) // 3.对压缩文件重命名
.pipe(gulp.dest('dist')) // 4. 输出压缩后的文件
.pipe(notify({ message: 'jsmin task complete' }));
}); //图片压缩,在命令行项目目录下使用 gulp imgmin 启动此任务
gulp.task('imgmin', function() {
gulp.src('docs/*/img/**/*.{png,jpg,gif,ico}')
.pipe(cache(imgmin({
optimizationLevel: 5,//类型:Number 默认:3 取值范围:0-7(优化等级)
progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染
multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化
})))
.pipe(gulp.dest('dist'))
.pipe(notify({ message: 'imagemin task complete' }));
}); //html文件压缩,在命令行项目目录下使用 gulp htmlmin 启动此任务
gulp.task('htmlmin', function () {
gulp.src('docs/*/*.html') // 要压缩的html文件
.pipe(htmlmin()) //压缩
.pipe(gulp.dest('dist'))
.pipe(notify({ message: 'htmlmin task complete' }));
}); //字体文件复制
gulp.task('fonts',function(){
gulp.src('docs/*/fonts')
.pipe(gulp.dest('dist'))
.pipe(notify({message: 'fonts task complete'}));
}) // js代码检查
// gulp.task('jshint', function() {
// gulp.src('docs/js/*.js')
// .pipe(jshint())
// // .pipe(jshint.reporter('default')); //默认在命令行里输出结果
// .pipe(jshint.reporter('gulp-jshint-html-reporter', {filename:'jshint-report.html'})); //输出结果到自定义的html文件 // }); //合并js或css文件等
// gulp.task('scripts', function() {
// gulp.src('./js/*.js')
// .pipe(concat('all.js'))
// .pipe(gulp.dest('./dist'))
// .pipe(rename('all.min.js'))
// .pipe(uglify())
// .pipe(gulp.dest('./dist'));
// });
//
// 编译SASS
// gulp.task('sass', function(){
//
//
//
// })
//
//
//在任务执行前,最好先清除之前生成的文件:
gulp.task('clean', function() {
return del(['dist']); //删除发布环境文件
}); // 默认任务,在命令行项目目录下使用 gulp 启动此任务
gulp.task('default',['clean'],function(){ //在默认任务执行前,先执行清除任务
gulp.start('cssmin', 'jsmin', 'imgmin', 'htmlmin');
}); //监听文件变化,在命令行项目目录下使用 gulp watch启动此任务,监听的文件有变化就自动执行
gulp.task('watch',function(){
//监听css
gulp.watch('docs/*/css/*.css',['cssmin']);
//监听js
gulp.watch('docs/*/js/*.js',['jsmin']);
//监听img
gulp.watch('docs/*/img/*/*.{png,jpg,gif,ico}',['imgmin']);
//监听HTML
gulp.watch('docs/*/*.html',['htmlmin']);
});

5. 运行Gulp

  1. 通过终端命令行进入项目根目录
  2. gulp defaultdefault (说明:命令提示符执行gulp 任务名称)

如有不明之处,还请参阅gulp详细入门教程

前端构建工具Gulp使用总结的更多相关文章

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

    前端构建工具gulp使用 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中 ...

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

    前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...

  3. 前端构建工具gulp

    前端构建工具gulp使用   前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gul ...

  4. 前端构建工具gulp使用

    前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中文文档 https://g ...

  5. 前端构建工具gulp介绍

    2016年3月3日 10:46:08     晴 前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简 ...

  6. 前端构建工具 Gulp.js 上手实例

    在软件开发中使用自动化构建工具的好处是显而易见的.通过工具自动化运行大量单调乏味.重复性的任务,比如图像压缩.文件合并.代码压缩.单元测试等等,可以为开发者节约大量的时间,使我们能够专注于真正重要的. ...

  7. 前端读者 | 前端构建工具Gulp

    @羯瑞 整理 前言 前端工具现在层出不穷,网上搜下一大片,就看你怎么去使用了,基于项目看用什么样的构建工具.有的工具提供的功能还是非常强大的. FIS.百度团队的产品.现在百度的多个产品中使用.面向前 ...

  8. 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5

    Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...

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

    http://www.cnblogs.com/starof/p/5194622.html 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 ...

  10. 自动化前端构建工具--gulp

    Gulp是一个基于任务的javascript工程命令行流式构建工具.为什么要用Gulp呢?前端开发进入到工程化阶段,我们需要压缩合并文件,加MD5戳:如果使用 CoffeeScript/ES6 去代替 ...

随机推荐

  1. Java 调用系统命令

    ProcessBuilder import java.io.File; import java.io.IOException; import java.io.InputStream; import j ...

  2. Javac常量池的解读

    interface IA{ public void md(); } public class Test07 implements IA{ final double d = 2.0d; final fl ...

  3. Git笔记:Git介绍和常用命令汇总

    Git 是一个开源的分布式版本控制系统,与 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持. 工作流程 Git 的工作流程大致如下: 克隆 Git 资源作为 ...

  4. 对html中iframe的研究

    虽然平时不怎么用iframe,但经常在网上听一些前辈说iframe怎样怎样,今天索性对iframe来个大研究,那样就不必去记那些条条框框了,自己体验一遍比看什么都好. 创建两个文件一个index.ht ...

  5. CentOS7 下安装 NFS,Linux/Windows 作为客户端

    目录 一.简介 1. 定义 2. 版本和变化 3. 部署说明 二.服务端 1. 关闭防火墙 2. 安装 nfs 3. 配置说明 4. 配置共享目录 5. 启动服务 6. 确认启动成功 三.Linux ...

  6. maven jetty debug 无法关联第三方类库解决办法

    http://ifedorenko.github.com/m2e-extras/

  7. nginx-access.log的logstash解析

    1.nginx的access的格式: log_format hehe '$http_host $server_addr $remote_addr [$time_local] "$reques ...

  8. [USACO 07DEC]Best Cow Line, Gold

    Description 题库链接 给以长度为 \(n\) 的字符串,要求每次只能从两边取一个字符,使得取出来之后字典序最小. \(1\leq n\leq 30000\) Solution 将字符串翻转 ...

  9. C# 金额转中文大写

    今天看到一个库是把金额转中文大写,看起来很容易,所以我就自己写了 创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的. 首先创建类,这个类的构造传入一个 ...

  10. Word文档中多个编号放同一行的方法(非技术)

    最近在帮公司出应届生校招面试题,为了方便,选择题部分的答案用了Word的[编号]功能!如下截图所示: 这么简短的四个答案这么竖着放很占空间(打印时也很浪纸张),能不能让它们全部横放在同一行,或两两一组 ...