gulp.js是一款自动化构建工具,我们经常使用它在开发过程自动执行常见的任务。gulp.js 是基于 Node.js 构建的,利用 Node.js,可以快速构建项目。

由于gulp使用基于node,所以首先要安装node环境。node.js有很多非常强大的作用,本文主要应用其环境以及把它当成一款包管理器来使用

使用gulp来构建项目,其步骤为:

1.在目录中创建dist文件夹(要发布的代码)

src文件夹(开发代码)

2.在根目录下写命令行 初始化:npm init ,此时根目录会出现package.json

3.局部安装gulp

npm install gulp --save-dev

4.创建gulpfile.js文件 与dist和src同级

配置信息:

首先引入:

var gulp = require("gulp")

(1)若想把src中的图片压缩至dist中

首先需要引入:

var imgin = require("gulp-imagemin")

其中gulp-imagemin为图片压缩的gulp插件,在require之前,首先需要在命令中 npm install下来

其次创建gulp任务

gulp.task("copyimg",function(){

     return
gulp.src("src/img/images/**/*").
pipe(imgin()).
pipe(gulp.dest("dist/images"));
})

其中copyimg为任务名,gulp.src()中为要操作的图片,pipe()中是要执行的,imgin是上面定义的压缩图片插件的名,gulp.dest()为要将图片移动到的文件夹

(2)若想把src的所有js文件合并成一个js文件且放入dist下

首先,先引入

var uglify = require("gulp-uglify");
var concat = reqiire("gulp-concat");
var rename = require("gulp-rename");

其中 gulp-uglify 用来压缩js ,gulp-concat 用来合并js,gulp-rename用来重命名.同理在require之前需要 npm install ....

其次,创建gulp任务

gulp.task("copyjs",function(){
return
gulp.src("/src/js/**/*").
pipe(concat("all.js")).
pipe(uglify()).
pipe(rename("all.min.js")).
pipe(gulp.dest("dist/js"))
})

这个任务意思就是把src/js/下的所有文件合并起来,叫all.js。再将all.js压缩,之后重命名为all.min.js,将此js放入dist/js/下

(3)若想将css文件压缩,新增一个hash值,放到dist文件下

var minifycss = require("gulp-minifycss");
var rev = require("gulp-rev")

其中gulp-minifycss 用来压缩css文件 ,gulp-rev用来给静态资源文件加上一个hash值,同理注意使用 npm install ...下载插件

gulp.task("copycss",function(){
return
gulp.src("src/css/**/*").
pipe(minifycss()).
pipe(rev()).
pipe(gulp.dest("dist/css")).
pipe(rev.manifest()).
pipe(gulp.dest("dist/css")); })

此任务将src/css里的所有文件压缩并生成hash后缀名。rev.manifest()是会生成一个json,里面存储的是文件原名和生成hash文件名的对应。最后将文件放到dist/css下

(4)若想html文件压缩并放入dist下

var htmlmin = require("gulp-htmlmin");

其中gulp-htmlmin用来压缩html文件

gulp.task("copyindex",function(){
return
gulp.src("src/client/**/*").
pipe(htmlmin({
removeComments:true,
collapseWhite:true,
collapseBooleanAttributes:true,//省略布尔属性的值,如<input checked="true"/> ==> <input />
removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS })).pipe(gulp.dest("dist/client"))
})

此task用来压缩html页面,有很多选项可选择,如上注释

(5)若css文件用了gulp-rev。则html文件在使用时需要动态更改引入的css文件名

var revCollector = require("gulp-rev-collector");

gulp-rev-collector根据rev生成的json文件用来替换html 中的<link href=""/>

gulp.task("rev-collector",function(){
return
gulp.src(["dist/css/**/*.json","dist/client/*.html"]).
pipe(revcollector({replaceReved:true})).
pipe(gulp.dest("dist/client"));
})

其中设置replaceReved标识, 用来说明模板中已经被替换的文件是否还能再被替换,默认是false

(6)若想自动监听

gulp.task("watch",function(){
gulp.watch("src/index.html",["copyindex"]);
gulp.watch("src/images/**/*",["copyimg"])
})

此任务对src下的index.html的文件监听任务名为copyindex的任务,同时对src/images下的所有图片监听copyimg这个任务

(7)创建服务器

var connect =   require('gulp-connect');

用来创建个服务器

 gulp.task('connect',function(){
connect.server({
root:"dist",//根目录
port: 8080,//端口号
livereload:true
});
});

此task设置了服务的根目录,端口号,以及是否即时刷新

本文主要分享这些,一般为gulp常用的命令,需特别注意文中所有reqire进来的资源 都需要用npm install 插件名将插件下载下来

详解常用的gulp命令的更多相关文章

  1. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  2. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  3. (2)free详解 (每周一个linux命令系列)

    (2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...

  4. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  5. String 字符串详解 / 常用API

    String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...

  6. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  7. ping命令技巧详解 windows下ping命令知识大全

    windows ping命令对于多数电脑爱好者都不会陌生,通过ping ip可以知道网络是否畅通或者网络传输质量如何等,是网络技术人员常用的检测网络命令,多数朋友对ping命令知道的并不多,接下来本文 ...

  8. 企业sudo权限规划详解 (实测一个堆命令搞定)

    简述问题:         随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系 ...

  9. 详解如何使用gulp实现项目在浏览器中的自动刷新

    情况描述: 我们很容易遇到这样一种情况: 我们并不是一开始就规划好了整个项目,比如可能接手别人的项目或者工程已经手动创建好了,现在要想利用gulp来实现浏览器自动刷新,那么如何做呢? 其实非常简单,本 ...

随机推荐

  1. String to Integer (atoi) leetcode

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  2. node c++多线程插件构想

    最近想写一个node的c++插件实现线程.提供的api使用回调并进行二次包装使其返回一个promise,并且要求需要在工作线程里执行的函数为async函数.如果是node7.0以下的版本,函数必须返回 ...

  3. SEO-关键词密度与友情链接交换技巧

    关键词密度 关键词密度 关键词密度与关键词频率所阐述的实质上是同一个概念,用来量度关键词在网页上出现的总次数与其他文字的比例,一般用百分比表示.相对于页面总字数而言,关键词出现的频率越高,关键词密度也 ...

  4. H5 音频

    HTML 5 音频 HTML5 视频/DOM HTML5 拖放 HTML5 提供了播放音频的标准. Web 上的音频 直到现在,仍然不存在一项旨在网页上播放音频的标准. 今天,大多数音频是通过插件(比 ...

  5. PHP流程管理,堪比小小程序

    这个流程管理是从用户登录界面开始,然后提交申请,页面逐级审核通过.这个做起来其实挺简单,只是在某些逻辑方面需要 好好考虑一下. 登录页面就不再多说了,如果要存session的话,我们可以建一个假的登录 ...

  6. Alamofire源码解读系列(八)之安全策略(ServerTrustPolicy)

    本篇主要讲解Alamofire中安全验证代码 前言 作为开发人员,理解HTTPS的原理和应用算是一项基本技能.HTTPS目前来说是非常安全的,但仍然有大量的公司还在使用HTTP.其实HTTPS也并不是 ...

  7. 集合框架(HashSet存储自定义对象保证元素唯一性)

    HashSet如何保证元素唯一性的原理 1.HashSet原理 a. 我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降 ...

  8. python的with语句,超级强大

    With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作.对于这种场景,Python的with语句提供了一种非常方便的处理方式.一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取 ...

  9. php写留言板

    简单的PHP留言板制作 做基础的留言板功能  需要三张表: 员工表,留言表,好友表 首先造一个登入页面: <form action="drcl.php" method=&qu ...

  10. 腾讯云报告——MySQL成勒索新目标,数据服务基线安全问题迫在眉睫

    推荐理由 大数据时代,人类产生的数据越来越多,但数据越多的情况下,也会带来数据的安全性问题,如MySQL数据库上的数据,越来越多的黑客盯上了它,今天推荐的这篇文章来自于腾讯云技术社区,主要是针对MyS ...