一、构建gulp环境

1、下载nodejs

gulp基于node.js,要通过nodejs的npm安装gulp,所以要先安装node.js环境。(英文官网/中文官网链接)。

通过cmd命令窗口确定安装node.js。(在命令窗口输入node -v或npm -v 查看是否返回出版本号)。

2、全局安装gulp(全局环境)

确定正确安装了nodejs环境,然后通过命令全局方式安装gulp:

  1. npm install gulp -g 或者 cnpm install gulp -g

二、项目流程

1)、方法一

1、生成项目所需信息文件package.json(项目目录为:F:\gulpproject)

cmd窗口进入gulp(不能有大写字母)目录,输入命令 npm init(初始化文件夹),然后一直按enter键至自动生成package.json文件。

2.项目根目录(gulpproject)下安装gulp(项目环境)

全局安装gulp后,还需要在gulppreject根目录下在单独安装一次(每个使用gulp的项目中都需单独安装一次)。

  1. npm install gulp --save-dev

3、安装所需要的自动化插件

  • 压缩js插件是 gulp-uglify
  • 压缩image插件是 gulp-image
  • 压缩css插件是 gulp-cssnano
  • 合并 gulp-concat
  • 压缩html插件是 gulp-htmlmin
  1. gulp-uplify安装
  2. npm install gulp-uplify --save-dev

4、配置gulpfile.js

gulpfile.js是gulppreject(gulp项目)项目的配置文件。

如果F:\gulpproject有一个项目compress文件夹,包含要压缩、合并的css,js,image文件,那么就将gulpfile.js放入compress文件夹中。

gulpfile.js配置文件:

  src里放的是文件路径,多个文件用“ , ”隔开

  1. var gulp = require('gulp'),
  2. uglify = require('gulp-uglify'),
  3. concat = require('gulp-concat'),
  4. htmlmin = require('gulp-htmlmin'),
  5. rename = require('gulp-rename'),
  6. cssnano = require('gulp-cssnano'),
  7. image = require("gulp-image"),
  8. del = require('del'),
  9. less = require('gulp-less');
  10.  
  11. //压缩css,压缩后的文件放入dest/css
  12. gulp.task('minifycss', function() {
  13. return gulp.src('css/*.css')
  14. .pipe(cssnano()) //压缩
  15. .pipe(gulp.dest('dest/css')); //输出
  16. });
  17. //合并并压缩css,合并压缩后的文件放入dest/css
  18. gulp.task('concatminifycss', function() {
  19. return gulp.src('css/*.css')
  20. .pipe(concat('main.css')) //合并所有css到main.css
  21. .pipe(gulp.dest('dest/css')) //输出main.css到文件夹
  22. .pipe(rename({ suffix: '.min' })) //rename压缩后的文件名
  23. .pipe(cssnano()) //压缩
  24. .pipe(gulp.dest('dest/css')); //输出
  25. });
  26.  
  27. gulp.task("htmlmin",function(){
  28. var options = {
  29. removeComments: true,//清除HTML注释
  30. collapseWhitespace: true,//压缩HTML
  31. collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input checked/>
  32. removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
  33. removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
  34. removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
  35. minifyJS: true,//压缩页面JS
  36. minifyCSS: true//压缩页面CSS
  37. };
  38. return gulp.src('*.html')
  39. .pipe(htmlmin(options))
  40. .pipe(gulp.dest('dest/'));
  41. });
  42.  
  43. //压缩js,压缩后的文件放入dest/js
  44. gulp.task('minifyjs', function() {
  45. return gulp.src('js/*.js')
  46. .pipe(uglify()) //压缩
  47. .pipe(gulp.dest('dest/js')); //输出
  48. });
  49.  
  50. //合并并压缩js,合并压缩后的文件放入dest/js
  51. gulp.task('concatminifyjs', function() {
  52. return gulp.src('js/*.js')
  53. .pipe(concat('main.js')) //合并所有js到main.js
  54. .pipe(gulp.dest('dest/js')) //输出main.js到文件夹
  55. .pipe(rename({ suffix: '.min' })) //rename压缩后的文件名
  56. .pipe(uglify()) //压缩
  57. .pipe(gulp.dest('dest/js')); //输出
  58. });
  59.  
  60. //压缩图片,压缩后的文件放入dest/images
  61. gulp.task('image', function() {
  62. gulp.src('img/*.+(jpg|png|gif|svg)')
  63. .pipe(image()) //压缩
  64. .pipe(gulp.dest('dest/images')); //输出
  65. });
  66.  
  67. //执行压缩前,先删除dest文件夹里的内容
  68. gulp.task('clean', function(cb) {
  69. del(['dest/*'], cb)
  70. });
  71.  
  72. //编译less到css
  73. gulp.task("less", function() {
  74. gulp.src('css/*.less')
  75. .pipe(less())
  76. .pipe(gulp.dest("dest/css"));
  77.  
  78. });
  79. //监视文件的变化
  80. gulp.task("watch", function() {
  81. gulp.watch("css/*.less", ['less']);
  82.  
  83. });
  84.  
  85. //默认命令,在cmd中输入gulp后,执行的就是这个命令
  86. gulp.task('default', function() {
  87. // 将你的默认的任务代码放在这
  88. gulp.start('clean', 'concatminifycss', 'image', 'concatminifyjs', 'htmlmin');
  89. });

5、执行压缩命令

要执行gulp任务,只需切换到存放gulpfile.js文件的目录(windows平台使用cmd),然后在命令行中执行gulp命令就行了。如果gulp后面加上要执行的任务名,例如gulp clean,将执行clean任务。如果没有指定任务名,则会执行任务名为default的默认任务。

2)、方法二

方法一是每次使用 gulp 构建都需要将项目放到 gulp 目录下,那可不可以不放入 gulp 目录下,直接在当前目录里执行 gulp 呢?

首先将自动化插件安装在全局环境中。即:

  1. gulp-uplify安装
  2. npm install gulp-uplify -g

然后在项目中配置gulpfile.js 文件。

注意此时,在命令行中执行gulp可能报错。原因如:

Ps:项目目录也不能有大写字母。

参考出处:http://www.cnblogs.com/starof/p/5194622.html


前端工具gulp使用的更多相关文章

  1. 前端工具gulp

    最近在写一个新的项目,用到了新框架,主要是:react+webpack.里面还用到了一个前端工具——gulp. gulp在项目里的作用是打包静态资源.编译less,压缩css等.js并不在处理之列(不 ...

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

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

  3. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  4. 前端构建工具gulp使用

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

  5. 前端自动构建工具@gulp入门

    gulp是一个自动化的前端工具.它可以利用自身的插件来实现一些功能,如sass.less编译:浏览器自动刷新,文件压缩.重命名.代码校验(个人使用sublime的插件进行校验)等功能.当然这些功能也可 ...

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

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

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

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

  8. 前端构建工具gulp

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

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

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

随机推荐

  1. JavaScript系列文章:自动类型转换-续

    在上一篇文章中,我们详细讲解了JavaScript中的自动类型转换,由于篇幅限制,没能覆盖到所有的转换规则,这次准备详细讲解一下. 上次我们提到了对象类型参与运算时转换规则: 1). 在逻辑环境中执行 ...

  2. Dictionary

    命名空间:System.Collections.Generic(程序集:mscorlib) Dictionary<TKey, TValue> 类   一般用法:通过key获取value,k ...

  3. easyUI combobox 控件 使用

    1,combobox 二级联动 (参数传递 函数调用) // toolbar 学校班级二级联动 var paramSearch = { school : $('#search-school'), cl ...

  4. AVA正则表达式4种常用功能

    正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: String str="abc efg ABC";  Str ...

  5. centos6.5 更新yum源

    在使用centos过程中,自带的yum源包,不能满足的情况下,这个时候就可以考虑升级yum源了.国内用的比较多的是163镜像地址为http://mirrors.163.com/.help/centos ...

  6. 测试开发面试-java持续累积

    接口和抽象类的区别 对java线程的理解 对java并发的理解 webservice的特点,用webservice的原因 守护线程和非守护线程 单例的实现,单例并发 如何实现定义一个类,只实现接口的任 ...

  7. vector it->和*it

    //每次写代码总是被迭代器的iter->和*iter弄晕,主要是被protobuf弄晕了 #include <vector> struct test{ test(){ memset( ...

  8. [AR+Vuforia]学习笔记

    若项目中导入了多个数据库对象,则需要在ARCamera中手动指定需要加载的对象:

  9. Java集合之LinkedList

    一.LinkedList概述 1.初识LinkedList 上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现. LinkedList是基于链表实现的,所以先讲解一下什么是链 ...

  10. C# Activator.CreateInstance()方法使用

    C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...