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. Git for Windows之团队合作

    1.先给项目添加一个成员 输入对方码云邮箱账号,添加成功. 2.登陆,将码云上面的项目克隆到本地 (1).设置全局参数  用户名和邮箱用于push和pull代码 (2).克隆目标项目地址 查看本地文件 ...

  2. arm 算力运算

    MIPS: Million Instructions executed Per SecondDMIPS: Dhrystone Million Instructions executed Per Sec ...

  3. C++ 操作符、局部 全局变量及自动转换原则

    1.&:表示与操作,eg:2&1=2&&:表示and操作,eg:1&&0=0|:表示或操作,eg:2|1=3||:表示or操作,eg:1||0=12.全 ...

  4. JAVA多态计算面积main函数调用方法

    public static void main(String[] args) { Shape shape; Scanner input = new Scanner(System.in); System ...

  5. zk特性和场景

    zk解决什么问题 分布式一致性问题 一致性一般定义是分布式系统中状态或数据保持同步和一致.实际上就是围绕着“看见”来的.谁能看见?能否看见?什么时候看见? 举个例子:淘宝后台卖家,在后台上架一件大促的 ...

  6. python3.X出现关于模块(i18n)的不能使用的解决方法

    今天在看python编程从入门到实践的时候,遇到了    如下问题 ModuleNotFoundError: No module named 'pygal.i18n' 然后查找文献找到一个网友 的解决 ...

  7. PHP强大的数组函数

    <?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/6 * Time: 21:56 */echo "<h3& ...

  8. 人工智能日常应用举例-nlp+视觉(听说看)

  9. [转](SQL Server) Convert a File from utf-8 to ANSI (such as Windows-1252)

    本文转自:https://example-code.com/sql/charset_convert_file_from_utf8_to_ansi.asp CREATE PROCEDURE Chilka ...

  10. ASP.NET MVC验证码演示(Ver2)

    前一版本<ASP.NET MVC验证码演示>http://www.cnblogs.com/insus/p/3622116.html,Insus.NET还是使用了Generic handle ...