gulp的安装以及使用详解,除了详细还是详细
安装gulp:
1. 创建本地包管理环境:
使用npm init
命令在本地生成一个package.json
文件,package.json
是用来记录你当前这个项目依赖了哪些包,以后别人拿到你这个项目后,不需要你的node_modules
文件夹(因为node_moduels中的包实在太庞大了)。只需要执行npm install
命令,即会自动安装package.json
下devDependencies
中指定的依赖包。
2. 安装gulp:
gulp
的安装非常简单,只要使用npm
命令安装即可。但是因为gulp
需要作为命令行的方式运行,因此需要在安装在系统级别的目录中。
npm install gulp -g
因为在本地需要使用require
的方式gulp
。因此也需要在本地安装一份:
npm install gulp --save-dev
以上的--save-dev
是将安装的包的添加到package.json
下的devDependencies
依赖中。以后通过npm install
即可自动安装。devDependencies
这个是用来记录开发环境下使用的包,如果想要记录生产环境下使用的包,那么在安装包的时候使用npm install xx --save
就会记录到package.json
下的dependencies
中,dependencies
是专门用来记录生产环境下的依赖包的!
3. 创建gulp任务:
要使用gulp
来流程化我们的开发工作。首先需要在项目的根目录下创建一个gulpfile.js
文件。然后在gulpfile.js
中填入以下代码:
var gulp = require("gulp")
gulp.task("greet",function () {
console.log('hello world');
});
这里对代码进行一一解释:
通过
require
语句引用已经安装的第三方依赖包。这个require
只能是引用当前项目的,不能引用全局下的。require
语法是node.js
独有的,只能在node.js
环境下使用。gulp.task
是用来创建一个任务。gulp.task
的第一个参数是命令的名字,第二个参数是一个函数,就是执行这个命令的时候会做什么事情,都是写在这个里面的。写完以上代码后,以后如果想要执行
greet
命令,那么只需要进入到项目所在的路径,然后终端使用gulp greet
即可执行。
4. 创建处理css文件的任务:
gulp
只是提供一个框架给我们。如果我们想要实现一些更加复杂的功能,比如css
压缩,那么我们还需要安装一下gulp-cssnano
插件。gulp
相关的插件安装也是通过npm
命令安装,安装方式跟其他包是一模一样的(gulp插件本身就是一个普通的包)。
对css
文件的处理,需要做的事情就是压缩,然后再将压缩后的文件放到指定目录下(不要和原来css文件重合了)!这里我们使用gulp-cssnano
来处理这个工作:
npm install gulp-cssnano --save-dev
然后在gulpfile.js
中写入以下代码:
var gulp = require("gulp")
var cssnano = require("gulp-cssnano")
// 定义一个处理css文件改动的任务
gulp.task("css",function () {
gulp.src("./css/*.css")
.pipe(cssnano())
.pipe(gulp.dest("./css/dist/"))
});
以上对代码进行详细解释:
新文件:
gulp.task
:创建一个css
处理的任务。gulp.src
:找到当前css
目录下所有以.css
结尾的css
文件。pipe
:管道方法。将上一个方法的返回结果传给另外一个处理器。比如以上的cssnano
。gulp.dest
:将处理完后的文件,放到指定的目录下。不要放在和原文件相同的目录,以免产生冲突,也不方便管理。
5. 修改文件名:
像以上任务,压缩完css
文件后,最好是给他添加一个.min.css
的后缀,这样一眼就能知道这个是经过压缩后的文件。这时候我们就需要使用gulp-rename
来修改了。当然首先也需要安装npm install gulp-rename --save-dev
。示例代码如下:
var gulp = require("gulp")
var cssnano = require("gulp-cssnano")
var rename = require("gulp-rename")
gulp.task("css",function () {
gulp.src("./css/*.css")
.pipe(cssnano())
.pipe(rename({"suffix":".min"}))
.pipe(gulp.dest("./css/dist/"))
});
在上述代码中,我们增加了一行.pipe(rename({"suffix":".min"}))
,这个我们就是使用rename
方法,并且传递一个对象参数,指定修改名字的规则为添加一个.min
后缀名。这个gulp-rename
还有其他的指定文件名的方式,比如可以在文件名前加个前缀等。更多的教程可以看这个:https://www.npmjs.com/package/gulp-rename。
6. 创建处理js文件的任务:
处理js
文件,我们需要使用到gulp-uglify
插件。安装命令如下:
npm install gulp-uglify --save-dev
安装完后,我们就可以对js
文件进行处理了。示例代码如下:
var gulp = require("gulp")
var rename = require("gulp-rename")
var uglify = require('gulp-uglify');
gulp.task('script',function(){
gulp.src(path.js + '*.js')
.pipe(uglify())
.pipe(rename({suffix:'.min'}))
.pipe(gulp.dest('js/'));
});
这里就是增加了一个.pipe(uglify())
的处理,对js
文件进行压缩和丑化(修改变量名)等处理。更多关于gulp-uglify
的教程。请看:https://github.com/mishoo/UglifyJS2#minify-options。
7. 合并多个文件:
在网页开发中,为了加快网页的渲染速度,有时候我们会将多个文件压缩成一个文件,从而减少请求的次数。要拼接文件,我们需要用到gulp-concat
插件。安装命令如下:
npm install gulp-concat --save-dev
比如我们现在有一个nav.js
文件用来控制导航条的。有一个index.js
文件用来控制首页整体内容的。那么我们可以使用以下代码将这两个文件合并成一个文件:
var gulp = require('gulp');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
gulp.task('vendorjs',function(){
gulp.src([
'./js/nav.js',
'./js/index.js'
])
.pipe(concat('index.min.js'))
.pipe(uglify())
.pipe(gulp.dest('dist/js/'));
});
8. 压缩图片:
图片是限制网站加载速度的一个主要原因。图片越大,从网站上下载所花费的时间越长。因此对于一些图片,我们可以采取无损压缩,即在不改变图片质量的基础之上进行压缩。在gulp
中我们可以通过gulp-imagemin
来帮我们实现。安装命令如下:
npm install gulp-imagemin --save-dev
压缩图片也是一个比较大的工作量,对于一些已经压缩过的图片,我们就没必要再重复压缩了。这时候我们可以使用gulp-cache
来缓存那些压缩过的图片。安装命令如下:
npm install gulp-cache --save-dev
两个插件结合使用的代码如下:
var imagemin = require('gulp-imagemin');
var cache = require('gulp-cache');
gulp.task('image',function(){
gulp.src("./images/*.*")
.pipe(cache(imagemin()))
.pipe(gulp.dest('dist/images/'));
});
9. 检测代码修改,自动刷新浏览器:
以上所有的任务,我们都是需要手动的在终端去执行。这样很不方便我们开发。最好的方式就是我修改了代码后,gulp
会自动的执行相应的任务。这个工作我们可以使用gulp
内置的watch
方法帮我们完成:
var gulp = require("gulp")
var cssnano = require("gulp-cssnano")
var rename = require("gulp-rename")
// 定义一个处理css文件改动的任务
gulp.task("css",function () {
gulp.src("./css/*.css")
.pipe(cssnano())
.pipe(rename({"suffix":".min"}))
.pipe(gulp.dest("./css/dist/"))
.pipe(connect.reload())
});
// 定义一个监听的任务
gulp.task("watch",function () {
// 监听所有的css文件,然后执行css这个任务
gulp.watch("./css/*.css",['css'])
});
以后只要在终端执行gulp watch
命令即可自动监听所有的css
文件,然后自动执行css
的任务,完成相应的工作。
10. 更改文件后,自动刷新浏览器:
以上我们实现了更改一些css
文件后,可以自动执行处理css
的任务。但是我们还是需要手动的去刷新浏览器,才能看到修改后的效果。有什么办法能在修改完代码后,自动的刷新浏览器呢。答案是使用browser-sync
。browser-sync
安装的命令如下:
npm install browser-sync --save-dev
browser-sync
使用的示例代码如下:
var gulp = require("gulp")
var cssnano = require("gulp-cssnano")
var rename = require("gulp-rename")
var bs = require("browser-sync").create()
gulp.task("bs",function () {
bs.init({
'server': {
'baseDir': './'
}
});
});
// 定义一个处理css文件改动的任务
gulp.task("css",function () {
gulp.src("./css/*.css")
.pipe(cssnano())
.pipe(rename({"suffix":".min"}))
.pipe(gulp.dest("./css/dist/"))
.pipe(bs.stream())
});
// 定义一个监听的任务
gulp.task("watch",function () {
gulp.watch("./css/*.css",['css'])
});
// 执行gulp server开启服务器
gulp.task("server",['bs','watch'])
以上我们创建了一个bs
的任务,这个任务会开启一个3000
端口,以后我们在访问html
页面的时候,就需要通过http://127.0.0.1:3000
的方式来访问了。然后接下来我们还定义了一个server
任务。这个任务会去执行bs
和watch
任务,只要修改了css
文件,那么就会执行css
的任务,然后就会自动刷新浏览器。browser-sync
更多的教程请参考:http://www.browsersync.cn/docs/gulp/。
gulp的安装以及使用详解,除了详细还是详细的更多相关文章
- 第210天:node、nvm、npm和gulp的安装和使用详解
一.node 1.什么是node? 它不是JS文件,也不是JS框架,而是Server side JavaScript runtime,当服务端的一个JS文件运行时,会被NODE拦截,在NODE中运行J ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- zookeeper的安装(图文详解。。。来点击哦!)
zookeeper的安装(图文详解...来点击哦!) 一.服务器的配置 三台服务器: 192.168.83.133 sunshine 192.168.83.134 sunshineMin 19 ...
- 转AjaxControlToolkit的安装与使用详解
AjaxControlToolkit的安装与使用详解 AjaxControlToolkit下载http://ajax.asp.net/downloads/default.aspx?tabid=47ht ...
- 学习笔记--Grunt、安装、图文详解
学习笔记--Git安装.图文详解 安装Git成功后,现在安装Gruntjs,官网:http://gruntjs.com/ 一.安装node 参考node.js 安装.图文详解 (最新的node会自动安 ...
- Mac下安装HBase及详解
Mac下安装HBase及详解 1. 千篇一律的HBase简介 HBase是Hadoop的数据库, 而Hive数据库的管理工具, HBase具有分布式, 可扩展及面向列存储的特点(基于谷歌BigTabl ...
- Ubuntu下安装JDK图文详解
很详细的在Ubuntu中安装JDK图文详解教程,我们选择的是jdk1.6.0_30版本.安装文件名为jdk-6u30-linux-i586.bin. 1.复制jdk到安装目录 (1)假设jdk安装文件 ...
- CentOS7/RHEL7安装Redis步骤详解
CentOS7/RHEL7安装Redis步骤详解 CentOS7/RHEL7安装Redis还是头一次测试安装了,因为centos7升级之后与centos6有比较大的区别了,下面我们就一起来看看Cent ...
- RedHat 7.1 下安装 Zabbix监控程序详解(适合linux初级用户)
RedHat 7.1 安装 Zabbix 监控程序详解(适合对linux初级用户)2017-05-02 安装步骤: 1.zabbix需要安装LAMP架构 2.安装zabbix服务 3.初始化zabbi ...
随机推荐
- vue 开发系列(五) 调用原生API
概要 我们在开发手机端程序的时候了,我们经常需要使用到拍照,二维码的功能.数字天堂公司提供了大量的原生API支持. http://www.html5plus.org/doc/ 实现 1.在hbuild ...
- 2-具体学习Github---init add commit log diff
1.安装: 首先找到git的官网,内部有下载链接. 也可以用下面的,我的是win7的64位系统: 可以在此处下载:Git-2.13.0-64-bit.exe链接:http://pan.baidu.co ...
- maven打包到私服,打的是war包,好郁闷
jenkins打完包上传到私服以后,发现只有war包,然而并木有别人想要的jar包,郁闷之极啊! 然后把公司的项目做了对比,发现这个正常的能上传jar包的项目的与我的另一个项目有点出入: 正常: 异 ...
- Arria10中的IOPLL与fPLL
最近在用Arria10.从480降到270的过程中,IOPLL出现问题,大概是说几个Bank的IOPLL已经被占用,没有空间再给别的IOPLL去适配. 因为在工程中,所用的PLL多达35个之多,其中明 ...
- Jersey RESTful WebService框架学习(二)使用@PathParam
@PathParamuri路径参数写在方法的参数中,获得请求路径参数.比如:@PathParam("username") String userName 前端请求: <!DO ...
- c3p0使用
c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> ...
- C++标准库addressof的应用
C++11将addressof作为标准库的一部分,用于取变量和函数等内存地址. 代码示例: #include <memory> #include <stdio.h> void ...
- day34(注解)
注解 注解和注释的区别: 注释:是给程序员看的. 注解:是给虚拟机识别的. 注解的作用: 1.代替配置文件 2.标识一个方法,代替一个特殊功能. JDK当中的提供的注解: 标识重写方法 @Overri ...
- ZUFE2483 DO IT YOURSELF 2017-05-31 14:41 40人阅读 评论(0) 收藏
2483: DO IT YOURSELF 时间限制: 2 Sec 内存限制: 128 MB 提交: 8 解决: 3 [提交][状态][讨论版] 题目描述 有四个字符串S,T,tmp,ans,一开始 ...
- Scala_方法、函数、柯里化
方法.函数.柯里化 方法 声明方法: scala> def m1(x:Int,y:Int):Int = { | x + y | }m1: (x: Int, y: Int)Ints ...