一、构建gulp环境

1、下载nodejs

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

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

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

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

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的项目中都需单独安装一次)。

npm install gulp --save-dev

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

  • 压缩js插件是 gulp-uglify
  • 压缩image插件是 gulp-image
  • 压缩css插件是 gulp-cssnano
  • 合并 gulp-concat
  • 压缩html插件是 gulp-htmlmin
如gulp-uplify安装
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里放的是文件路径,多个文件用“ , ”隔开

var gulp = require('gulp'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
htmlmin = require('gulp-htmlmin'),
rename = require('gulp-rename'),
cssnano = require('gulp-cssnano'),
image = require("gulp-image"),
del = require('del'),
less = require('gulp-less'); //压缩css,压缩后的文件放入dest/css
gulp.task('minifycss', function() {
return gulp.src('css/*.css')
.pipe(cssnano()) //压缩
.pipe(gulp.dest('dest/css')); //输出
});
//合并并压缩css,合并压缩后的文件放入dest/css
gulp.task('concatminifycss', function() {
return gulp.src('css/*.css')
.pipe(concat('main.css')) //合并所有css到main.css
.pipe(gulp.dest('dest/css')) //输出main.css到文件夹
.pipe(rename({ suffix: '.min' })) //rename压缩后的文件名
.pipe(cssnano()) //压缩
.pipe(gulp.dest('dest/css')); //输出
}); gulp.task("htmlmin",function(){
var options = {
removeComments: true,//清除HTML注释
collapseWhitespace: true,//压缩HTML
collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input checked/>
removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS
};
return gulp.src('*.html')
.pipe(htmlmin(options))
.pipe(gulp.dest('dest/'));
}); //压缩js,压缩后的文件放入dest/js
gulp.task('minifyjs', function() {
return gulp.src('js/*.js')
.pipe(uglify()) //压缩
.pipe(gulp.dest('dest/js')); //输出
}); //合并并压缩js,合并压缩后的文件放入dest/js
gulp.task('concatminifyjs', function() {
return gulp.src('js/*.js')
.pipe(concat('main.js')) //合并所有js到main.js
.pipe(gulp.dest('dest/js')) //输出main.js到文件夹
.pipe(rename({ suffix: '.min' })) //rename压缩后的文件名
.pipe(uglify()) //压缩
.pipe(gulp.dest('dest/js')); //输出
}); //压缩图片,压缩后的文件放入dest/images
gulp.task('image', function() {
gulp.src('img/*.+(jpg|png|gif|svg)')
.pipe(image()) //压缩
.pipe(gulp.dest('dest/images')); //输出
}); //执行压缩前,先删除dest文件夹里的内容
gulp.task('clean', function(cb) {
del(['dest/*'], cb)
}); //编译less到css
gulp.task("less", function() {
gulp.src('css/*.less')
.pipe(less())
.pipe(gulp.dest("dest/css")); });
//监视文件的变化
gulp.task("watch", function() {
gulp.watch("css/*.less", ['less']); }); //默认命令,在cmd中输入gulp后,执行的就是这个命令
gulp.task('default', function() {
// 将你的默认的任务代码放在这
gulp.start('clean', 'concatminifycss', 'image', 'concatminifyjs', 'htmlmin');
});

5、执行压缩命令

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

2)、方法二

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

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

如gulp-uplify安装
npm install gulp-uplify -g

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

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

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

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


前端学习之路——gulp篇的更多相关文章

  1. 前端学习之路——scss篇

    一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 二.安装和使用 Sass依赖于ruby环境,所以装sass之前先 ...

  2. 前端学习之路——Git篇

    本文只是一个个人学习Git的笔记,如有错误的地方,还望指出,谢谢!参考资料如下: <Git教程--廖雪峰的官方网站 > bootstrap里面的--git_guide Git安装 在网上搜 ...

  3. jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  4. 前端学习之路-CSS介绍,Html介绍,JavaScript介绍

    CSS介绍 学前端必备掌握CSS样式,css为层叠样式表,用来定义页面的显示效果,加强用户的体验乐趣,那么如何用css到html中呢? style属性方式 利用标签中的style属性来改变显示样式 & ...

  5. STM32学习之路入门篇之指令集及cortex——m3的存储系统

    STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码        操作数1, 操作数2,... ...

  6. 我的web前端自学之路-心得篇:我为什么要学习web前端?

    时光如流水,转眼间,自己已经是大三的学长了,看着一个个学弟学妹,心中有种莫名的感觉,很怀念大学的前两年时光,但也很憧憬着自己的未来,自己将要去经历很多从未经历的事.我是我们学校信科院的一名学生,在编程 ...

  7. Vue学习之路第一篇(学习准备)

    1.开发工具的选择 这个和个人的开发习惯有关,并不做强求,厉害的话用记事本也可以.但是我还是建议用人气比较高的编辑工具,毕竟功能比较全面,开发起来效率比较高. 我之前写前端一直用的是sublimete ...

  8. Day1前端学习之路——概述

    终于下定决心要好好学习前端知识了,以后会把学习过程中的一些随笔记录在这里.HTML.CSS.JavaScript这三大前端语言在大三的时候就有所接触,但是学习的不够深入,这一次希望能够坚持下去. 学习 ...

  9. web前端学习之路

    test 随着自己对于web前端知识了解的越多,越来越发现自己真的好菜 一脸茫然阶段 两年前大学接触网页设计,那时对于网页设计一窍不通,只是看了一本自己大学编的一本入门教材,我甚至不知道那些网页设计的 ...

随机推荐

  1. DB2load遇到SQL3508N错误

    SQL3508N装入或装入查询期间,当存取类型为 "<文件类型>" 的文件或路径时出错.原因码:"<原因码>".路径:"< ...

  2. WCF(一)控制台寄宿

    WCF是微软开发的一款通信框架.具有跨平台跨操作系统的特点,所以,WCF一般用于开发第三方接口或者在分布式系统用做数据交互. WCF三要素分别是地址(Address).绑定(Binding).契约(C ...

  3. swift使用查阅资料备份3

    自主学习之RxSwift(二) -----flatMap https://blog.csdn.net/chelongfei/article/details/50995603 RxSwift 系列(九) ...

  4. 一个完整的Flexbox指南(转载)

    本文由大漠根据Chris Coyier的<A Complete Guide to Flexbox>所译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点.如需转载此 ...

  5. P3376 【模板】网络最大流(luogu)

    P3376 [模板]网络最大流(luogu) 最大流的dinic算法模板(采取了多种优化) 优化 时间 inline+当前弧+炸点+多路增广 174ms no 当前弧 175ms no 炸点 249 ...

  6. (2016北京集训十三)【xsy1531】魔法游戏 - Nim游戏

    题解: 好题!我的结论很接近正解了... 把一个数化成二进制,每次至少要拿走一位,最多全拿走,不能不拿.那么这就是一个经典的Nim问题了,子树异或起来就是根节点的答案,随便递推一下就行了. 代码: # ...

  7. BZOJ 4012 [HNOI2015]开店 (树分治+二分)

    题目大意: 给你一棵树,边有边权,点有点权,有很多次询问,求点权$\in[l,r]$的所有节点到某点$x$的距离之和,强制在线 感觉这个题应该放在动态点分之前做= = 套路方法和动态点分是一样的 每次 ...

  8. 解决locate无法使用的问题

    使用yum安装,locate的安装包名为mlocate 安装: yum -y install mlocate 更新: updatedb 无法使用:先下载

  9. js如何实现php的in_array()

    var arr = [ 4, "Pete", 8, "John" ]; jQuery.inArray("John", arr); //3 j ...

  10. JavaScript push(),join() 函数

    定义和用法 push方法 可向数组的末尾添加一个或多个元素,并返回一个新的长度. join方法 用于把数组中所有元素添加到一个指定的字符串,元素是通过指定的分隔符进行分割的. 语法 arrayObje ...