前言

新人使用gulp的一个记录。

首先对于第一个新事物,我会问gulp这是什么?

答:gulp是一个自动化构建工具,它可以做一些自动化的任务,比如:

  • 检查Javascript
  • 编译Sass(或Less之类的)文件
  • 合并Javascript
  • 压缩并重命名合并后的Javascript
  • 变更静态资源
  • 给静态资源添加 md5
  • 合并雪碧图
  • 自动刷新浏览器
  • ...

以前为了提高网站的访问速度,这些都是人工做的,现在gulp可以很好的完成他们,因为它们是流程化的,程序员就是极客,这种能用程序做的当然不用人来咯。

好了,想必到这大家也对gulp有了初步的了解,下面开始进入使用流程。

gulp的使用

gulp的使用很简单。

三步走起!!!

项目目录

同样,我们先建立一个新项目用来入门。项目的目录结构如下:

 

这里我先简单贴出里面的具体代码,我们最最重要的是 gulpfile.js

首先是两个js文件,咱们这次只是为了测试,所以代码都很简单。

header.jsindex.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.lessgulp就会自动重新执行三个Task,具体就不演示了。

这时候你打开你的views下的index.html,能见到以下画面,说明你成功了。

 

代码

本文代码已经上传到 github上,喜欢的话,给个star呗。

https://github.com/XuXiaoGH/gulptest/tree/master

写在最后

本文是一个gulp的入门级教程,如有错误还请大牛指正,让小子也有得进步。
如果对你有所帮助,那是我最大的荣幸。

对了,兄台,对你有帮助的话能否点个赞再走。

文/夏风轻语(简书作者)
原文链接:http://www.jianshu.com/p/c0b7db11079c
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

JS那些事儿——Gulp的入门使用的更多相关文章

  1. Gulp使用入门操作十一步压缩JS

    前提需要安装nodejs 一. 全局安装Gulp npm install -g gulp 二.新建一个 gulpfile.js 文件 chapter2└── gulpfile.js 三.在 gulpf ...

  2. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  3. 【原】gulp快速入门

    今天刚入职了一家新公司,结果明天就要开始项目了.上级说要用gulp来打包代码,所以今晚花了一晚来看这个gulp, 可以说已经入门了.所以做一个小小的总结 : 首先全局安装gulp npm instal ...

  4. gulp快速入门

    gulp快速入门 因为之前一直有人给我推荐gulp,说他这里好哪里好的.实际上对我来说够用就行.grunt熟悉以后实际上他的配置也不难,说到效率的话如果真是要完整打包上线也不在乎那么几秒时间,对于项目 ...

  5. gulp快速入门&初体验

    前言 一句话先 gulp 是一个可以简单和自动化"管理"前端文件的构建工具 先说我以前的主要工作,我主要是做游戏服务端的,用c++/python,所以我对东西的概念理解难免要套到自 ...

  6. gulp的使用以及Gulp新手入门教程

    Gulp新手入门教程 原文  http://w3ctrain.com/2015/12/22/gulp-for-beginners/ Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭 ...

  7. Gulp新手入门教程

    Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass.LESS 优化资源,比如压缩CSS.JavaScript.压缩图片 ...

  8. 前端打包构建工具gulp快速入门

    因为之前一直有人给我推荐gulp,说他这里好哪里好的.实际上对我来说够用就行.grunt熟悉以后实际上他的配置也不难,说到效率的话确实是个问题,尤其项目大了以后,目前位置遇到的项目都还可以忍受.不过不 ...

  9. gulp详细入门教程-gulp demo download

    简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码 ...

随机推荐

  1. cocos2d-x游戏开发(一)之环境搭建篇

    前言 进入研究生生涯已经有一段时间,感觉却没做些什么,实验室虽有一个很大的国家项目,但考虑到它这么的单一,总想利用业余时间做些什么,拓宽一下自己的知识面. 偶然机会,了解到cocos这个东东,恰好,实 ...

  2. ServletResponse使用方法

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 request和response对象即然代表请求和响应,那我们要 ...

  3. cookie小结(转)

    原文地址:http://www.cnblogs.com/xianyulaodi/p/6476991.html#_label0 作者:咸鱼老弟   阅读目录 什么是cookie       官方定义:N ...

  4. 获取class

    使用原生JavaScript,获取类操作符时:即使使用getElementByClassName,在Firefox和IE9以下是不兼容的.Firefox下是可以用它获取的到元素而IE不行,一般框架都会 ...

  5. centos 7 安装vmware 12

    1.下载VMware 衔接地址 http://www.vmware.com/products/workstation/workstation-evaluation ,下载Linux版本的VMware. ...

  6. 【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 ...

  7. [android 应用开发]android 分层

    1 应用层, 2 应用框架层(框架是所有开发人员共同使用和遵守的约定) 3 系统运行库层 4 linux内核层

  8. P2341 受欢迎的牛

    受欢迎的牛 洛谷链接 题目大意: 有n头牛,牛会喜欢其他牛和自己,而喜欢是可以传递的,求被所有牛喜欢的牛的数量. 思路: 这是一道tarjan缩点的题目.被所有牛都喜欢的牛,一定会在一个强连通分量里. ...

  9. 九度oj 题目1139:最大子矩阵

    题目描述: 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 ...

  10. 洛谷P3327 - [SDOI2015]约数个数和

    Portal Description 共\(T(T\leq5\times10^4)\)组数据.给出\(n,m(n,m\leq5\times10^4)\),求\[\sum_{i=1}^n\sum_{j= ...