JS那些事儿——Gulp的入门使用
前言
新人使用gulp的一个记录。
首先对于第一个新事物,我会问gulp这是什么?
答:gulp是一个自动化构建工具,它可以做一些自动化的任务,比如:
- 检查Javascript
- 编译Sass(或Less之类的)文件
- 合并Javascript
- 压缩并重命名合并后的Javascript
- 变更静态资源
- 给静态资源添加 md5
- 合并雪碧图
- 自动刷新浏览器
- ...
以前为了提高网站的访问速度,这些都是人工做的,现在gulp可以很好的完成他们,因为它们是流程化的,程序员就是极客,这种能用程序做的当然不用人来咯。
好了,想必到这大家也对gulp有了初步的了解,下面开始进入使用流程。
gulp的使用
gulp的使用很简单。
三步走起!!!
项目目录
同样,我们先建立一个新项目用来入门。项目的目录结构如下:
这里我先简单贴出里面的具体代码,我们最最重要的是 gulpfile.js
首先是两个js文件,咱们这次只是为了测试,所以代码都很简单。
header.js 和 index.js
//header.js
function A() {
console.log("I am A");
}
//index.js
function B() {
console.log("I am B");
}
下面再看看 index.less
// index.less
@color: #4D926F;
#header {
background-color: @color;
}
h2 {
color: @color;
}
再下面是 index.html
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../../dist/css/index.css" />
<title>Title</title>
</head>
<body>
</body>
</html>
Gulp配置文件
最最最重要的 gulpfile.js 闪亮登场,这段我们好好讲讲,非常重要。
gulp只有五个方法: task , run , watch , src ,和 dest
task这个API用来创建任务,在命令行下可以输入 gulp test 来执行test的任务。run这个API用来运行任务watch这个API用来监听任务。src这个API设置需要处理的文件的路径,可以是多个文件以数组的形式[main.scss,vender.scss],也可以是正则表达式/*/.scss。dest这个API设置生成文件的路径,一个任务可以有多个生成路径,一个可以输出未压缩的版本,另一个可以输出压缩后的版本。
其实整个gulp的配置文件,基本上都是在做一些任务的配置,比如创建任务,监听任务等等。
// gulpfile.js
// 引入 gulp
var gulp = require('gulp');
// 引入组件
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
// 编译less
gulp.task('less', function() {
gulp.src('src/less/*.less') //该任务针对的文件
.pipe(sass()) //该任务调用的模块
.pipe(gulp.dest('./dist/css')); //将会在dist/css下生成index.css
});
// 检查脚本
gulp.task('lint', function() {
gulp.src('src/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
// 合并,压缩文件
gulp.task('scripts', function() {
gulp.src('src/js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist'));
});
// 默认任务
gulp.task('default', function(){
gulp.run('lint', 'less', 'scripts');
// 监听JS文件变化
gulp.watch('src/js/*.js', function(){
gulp.run('lint', 'less', 'scripts'); //多个任务就直接往后加即可
});
// 监听less文件变化
gulp.watch('src/less/*.less', function(){
gulp.run('lint', 'less', 'scripts');
});
});
// gulp.task(name[, deps], fn) 定义任务 name:任务名称 deps:依赖任务名称 fn:回调函数
// gulp.src(globs[, options]) 执行任务处理的文件 globs:处理的文件路径(字符串或者字符串数组)
// gulp.dest(path[, options]) 处理完后文件生成路径
这时,我们创建了一个基于其他任务的default任务。使用 .run() 方法关联和运行我们上面定义的任务,使用 .watch() 方法去监听指定目录的文件变化,当有文件变化时,会运行回调定义的其他任务,就会自动重新编译打包了,就是重新运行上面的任务。
上面的注释说的都很清楚,初步的,其他的就不介绍了。
好了,到现在为止,我们的代码已经写完了。
执行Gulp任务
下面咱们开始执行自动化任务命令。gulp xxx , 这里的 xxx 就是咱们上面写的 task,咱们还可以写 gulp less , gulp lint...
结果如下:
而且文件都是编译好的。
// index.css less编译后的,很强大吧
body {
background-color: #4D926F;
}
h2 {
color: #4D926F;
}
// all.js 合并了 index.js header.js的内容
function B() {
console.log("I am B");
}
function A() {
console.log("I am A");
}
//all.min.js 被压缩后的
function B(){console.log("I am B")}function A(){console.log("I am A")}
另外说下 gulp.watch 这个是监听文件变化,我们修改一下 index.less,gulp就会自动重新执行三个Task,具体就不演示了。
这时候你打开你的views下的index.html,能见到以下画面,说明你成功了。
代码
本文代码已经上传到 github上,喜欢的话,给个star呗。
https://github.com/XuXiaoGH/gulptest/tree/master
写在最后
本文是一个gulp的入门级教程,如有错误还请大牛指正,让小子也有得进步。
如果对你有所帮助,那是我最大的荣幸。
对了,兄台,对你有帮助的话能否点个赞再走。
原文链接:http://www.jianshu.com/p/c0b7db11079c
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
JS那些事儿——Gulp的入门使用的更多相关文章
- Gulp使用入门操作十一步压缩JS
前提需要安装nodejs 一. 全局安装Gulp npm install -g gulp 二.新建一个 gulpfile.js 文件 chapter2└── gulpfile.js 三.在 gulpf ...
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- 【原】gulp快速入门
今天刚入职了一家新公司,结果明天就要开始项目了.上级说要用gulp来打包代码,所以今晚花了一晚来看这个gulp, 可以说已经入门了.所以做一个小小的总结 : 首先全局安装gulp npm instal ...
- gulp快速入门
gulp快速入门 因为之前一直有人给我推荐gulp,说他这里好哪里好的.实际上对我来说够用就行.grunt熟悉以后实际上他的配置也不难,说到效率的话如果真是要完整打包上线也不在乎那么几秒时间,对于项目 ...
- gulp快速入门&初体验
前言 一句话先 gulp 是一个可以简单和自动化"管理"前端文件的构建工具 先说我以前的主要工作,我主要是做游戏服务端的,用c++/python,所以我对东西的概念理解难免要套到自 ...
- gulp的使用以及Gulp新手入门教程
Gulp新手入门教程 原文 http://w3ctrain.com/2015/12/22/gulp-for-beginners/ Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭 ...
- Gulp新手入门教程
Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass.LESS 优化资源,比如压缩CSS.JavaScript.压缩图片 ...
- 前端打包构建工具gulp快速入门
因为之前一直有人给我推荐gulp,说他这里好哪里好的.实际上对我来说够用就行.grunt熟悉以后实际上他的配置也不难,说到效率的话确实是个问题,尤其项目大了以后,目前位置遇到的项目都还可以忍受.不过不 ...
- gulp详细入门教程-gulp demo download
简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码 ...
随机推荐
- cocos2d-x游戏开发(一)之环境搭建篇
前言 进入研究生生涯已经有一段时间,感觉却没做些什么,实验室虽有一个很大的国家项目,但考虑到它这么的单一,总想利用业余时间做些什么,拓宽一下自己的知识面. 偶然机会,了解到cocos这个东东,恰好,实 ...
- ServletResponse使用方法
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 request和response对象即然代表请求和响应,那我们要 ...
- cookie小结(转)
原文地址:http://www.cnblogs.com/xianyulaodi/p/6476991.html#_label0 作者:咸鱼老弟 阅读目录 什么是cookie 官方定义:N ...
- 获取class
使用原生JavaScript,获取类操作符时:即使使用getElementByClassName,在Firefox和IE9以下是不兼容的.Firefox下是可以用它获取的到元素而IE不行,一般框架都会 ...
- centos 7 安装vmware 12
1.下载VMware 衔接地址 http://www.vmware.com/products/workstation/workstation-evaluation ,下载Linux版本的VMware. ...
- 【LeetCode】Roman to Integer(罗马数字转整数)
这道题是LeetCode里的第13道题. 题目说明: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1 ...
- [android 应用开发]android 分层
1 应用层, 2 应用框架层(框架是所有开发人员共同使用和遵守的约定) 3 系统运行库层 4 linux内核层
- P2341 受欢迎的牛
受欢迎的牛 洛谷链接 题目大意: 有n头牛,牛会喜欢其他牛和自己,而喜欢是可以传递的,求被所有牛喜欢的牛的数量. 思路: 这是一道tarjan缩点的题目.被所有牛都喜欢的牛,一定会在一个强连通分量里. ...
- 九度oj 题目1139:最大子矩阵
题目描述: 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 ...
- 洛谷P3327 - [SDOI2015]约数个数和
Portal Description 共\(T(T\leq5\times10^4)\)组数据.给出\(n,m(n,m\leq5\times10^4)\),求\[\sum_{i=1}^n\sum_{j= ...