gulp 基本使用
1, gulp 依赖node, 使用gulp 之前,要先安装node. Node 安装完成后,它自带npm.
Npm: node package manager 就是node 包管理器. 用过java 的就知道,java 有许多包,我们使用一个包的时候,要先引入 import 这个包。Node 也是一样,当我们使用一个包时,就需要先安装它, npm install 包名。
2, Node 安装完成, 按window +r 组合键,调用运行窗口,输入cmd, 打开windows 自带的命令窗口。输入npm install –g gulp, 就可全局安装gulp(g就是global 全局的意思)。
所谓全局安装,就是指我们可以在命令行中使用glup 命令。Gulp 安装完成后,你直接在命令行中输入gulp -v , 它就输出了 gulp 的版本号。这也证明,我们可以在命令行中,直接使用gulp 命令。 这和java 的配置环境变量一样,如果要想在命令行中使用java 命令,就必须手动配置环境变量,npm install –g 安装之后,我们就省略掉这一步,直接使用。
3, 这时,我们就可以开始我们的项目了。比如,进入到e: 盘,新建一个空文件夹,命名为gulp。打开该文件夹,首先要做的是创建 一个package.json文件。这个文件主要是对整个 项目进行描述,项目名字,版本号,最主要是 对开发这个项目的依赖进行管理。怎样才能快速建立这个文件? 进入到该文件夹下,按住shift键,右击鼠标, 单击“在此处打开命令窗口”,打开命令窗口,输入 npm init , 按要求进行添写,注意,命名(name) 不能用大写。
4, gulp 工作主要是通过插件完成,这里我们就用一下gulp-less 插件。准备工作:在gulp 文件夹下,新建index.html, less文件夹, less 文件夹下再建style.less文件。

在该文件夹下,打开命令行:npm install gulp gulp-less –save-dev, 本地安装gulp 和gulp-less 插件。所谓本地安装,其实就是只能在该项目文件夹下使用, 安装完成后,在文件中,你能看到多了一个node_modules 文件夹,它里面就包括我们安装的gulp 和gulp-less。 --save-dev, 保存到开发依赖中,dev 就是development, 指的就是开发环境。这时,打开package.json文件,你们会看到多了,devDependencies 字段,下面是gulp和gulp-less 及版本号。
5, 还差一步,那就是gulp的配置文件,gulpfile.js 文件。我们什么工具都有了,那要告诉gulp干什么事情, 这就是gulpfile.js文件做的事情,定义任务。在gulp文件夹下(项目根目下),新建gulpfile.js文件。先写一个简单的任务,把less转化成css。
var gulp = require("gulp");
var less = require("gulp-less");
gulp.task("less", function(){
gulp.src("less/style.less")
.pipe(less())
.pipe(gulp.dest("build"))
})
6,在gulp根目录文件夹下,打开命令行,输入gulp less, 结束后,你可以看到,文件夹下多了一个build文件夹,并且里面有style.css 文件,打开index.html, 引入style.css, 可以看到样式起作用了。这证明,gulp任务完成。

首先,我们看到声明了两个变量。上面说到,本地安装的时候,只能在该项目下面使用,就是说的下面这两句。 因为,node 遵循的是CommonJS 规范, 通过require加载模块文件,进行使用。
var gulp = require(“glup”);
var less = require(“gulp-less”)
后面就是gulp 的api, gulp.task, gulp.src, gulp.dest, 和 pipe。 pipe是管道的意思,这也是gulp所说的它是其于流的构建工具。前一个的输出,变成后一个输入。
gulp.task(): 为gulp 定义一个任务,首先必须有任务名,这样我们才能告诉gulp 执行哪个任务,比如,在命令行中,输入glup less 就是执行我们定义的less命令。其次这个任务做什么事情,其实还有最一个可选,就是我们这个任务要不要等其他任务完成才执行,如果是,那就需要把这个依赖写到任务中,所以它接受两个必须参数,和一个可选参数。
gulp.task(name, dependes, func):
name: 就是任务名,它是一个字符串,注意命名中不能有空格,要不然,命令行中无法执行。dependes(可选): 定义完成这个任务之前,必须先执行完成哪些任务,因此,它是一个数组列表,依次列出要先完成的任务如:[“a”, “b”]。func: 函数: 定义这个任务要做的事性。
如果,我们想把css 再压缩,那就需要先把less 转化css, 再进行压缩, less转为化css 就必须先执行,这就是依赖dependes. 要压缩css, 需要引入gulp-minify-css 插件,同时 引入gulp-rename 插件可以对压缩后的文件进行重命名, 写一个压缩任务minifycss, 对三个参数进行说明。
gulp.task("minifycss", ["less"], function(){
gulp.src("build/style.css")
.pipe(minifycss())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest("build"))
})
这时,命令行中执行gulp minifycss 命令并没有使我们的网页发生变化,原来这个命令只是执行了less 任务, less转为化css 。一个命令只能执行一个任务,但它保证了任务的按顺序执行, 再执行gulp minifycss 命令, 网页发生了变化。 但是后来发现,这是我的一个错误认识。上文说到,gulp 是基于流的操作。gulp 执行minifycss 任务时依赖less, 因此 less 执行完后,必须要返回一个流,这个流再流入minifycss,这样就可以连续执行了。但我们的less任务没有返回值,所以执行完less任务后就中断了。less任务修改一下,加return, 这样执行一个gulp minifycss 命令就可以了。
gulp.task("less", function(){
return gulp.src("less/style.less")
.pipe(less())
.pipe(gulp.dest("build"))
})
为了减少在命令行中的输入,可以定义默认任务,定义之后,直接在命令行中输入gulp,就可以执行任务。定义方式:gulp.task("default", ["minifycss"]). gulpfile.js文件如下,命令行中输入gulp 可以才测试。
var gulp = require("gulp");
var less = require("gulp-less");
var minifycss = require("gulp-minify-css");
var rename = require('gulp-rename');
// less --> css
gulp.task("less", function(){
return gulp.src("less/style.scss")
.pipe(less())
.pipe(gulp.dest("build"))
})
// 压缩css
gulp.task("minifycss", ["less"], function(){
gulp.src("build/style.css")
.pipe(minifycss())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest("build"))
})
// 定义默认任务
gulp.task("default", ["minifycss"]);
gulp.src():指定任务要处理的文件,因此,它接受一个必须的参数:文件的路径, 它还有一个可选的options, 对它进行配置,这时没有具体研究。gulp.src(“文件路径”[, options])
文件路径可以是具体的路径,可以是通配符路径:具体如下:
“src/a.js”:指定具体文件;
“*”:匹配所有文件 例:src/*.js(包含src下的所有js文件);
“**”:匹配0个或多个子文件夹 例:src/**/*.js(包含src的0个或多个子文件夹下的js文件);
“{}”:匹配多个属性 例:src/{a,b}.js(包含a.js和b.js文件) src/*.{jpg,png,gif}(src下的所有jpg/png/gif文件);
“!”:排除文件 例:!src/a.js(不包含src下的a.js文件);
gulp.dest(): 指定任务完成后生成的文件放到什么地方,因此它接受一个必须的参数:文件的路径, 和 gulp.src 一样,它还有一个可选的options, 对它进行配置,gulp.dest(“文件路径”[, options])。
gulp 还有一个api,我们没有用到,这就是gulp.watch(), 它对文件变动进行监听,如果文件变动之后,它要做哪些事情。因此,它接受两个必须的参数,要监听的文件,执行的任务列表。 如gulp.watch('less/*.less', ['less','minifycss']); 如果.less文件发生变化,gulp 自动执行less 和minifycss 任务。 定义一个watch任务并执行,修改一下.less 文件,可以看到style.css 和min.css 文件同时变化了,刷新浏览器,也变化了。
gulp.task("watch", function(){
gulp.watch("less/*.less", ["less", "minifycss"])
})
gulp.watch还能返回一个对象发射change 事件,它接受一个回调函数,change 完成后,执行的事情, 修改上面的代码如下, 执行gulp命令可以看到控制台输出1
gulp.task("watch", function(){
var watch = gulp.watch("less/*.less", ["less", "minifycss"]);
watch.on('change', function(){
console.log(1);
})
})
gulp 最基本的就这些了,整个配置文件如下:
var gulp = require("gulp");
var less = require("gulp-less");
var minifycss = require("gulp-minify-css");
var rename = require('gulp-rename');
// less --> css
gulp.task("less", function(){
return gulp.src("less/style.less")
.pipe(less())
.pipe(gulp.dest("build"))
})
// 压缩css
gulp.task("minifycss", ["less"], function(){
gulp.src("build/style.css")
.pipe(minifycss())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest("build"))
})
// 监听任务
gulp.task("watch", function(){
var watch = gulp.watch("less/*.less", ["less", "minifycss"]);
watch.on('change', function(){
console.log(1);
})
})
gulp.task("default", ["watch"]);
gulp 基本使用的更多相关文章
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...
- 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- 做一个gulp+webpack+vue的单页应用开发架子
1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命 ...
- 前端自动化构建工具gulp记录
一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...
- gulp初学
原文地址:gulp初学 至于gulp与grunt的区别,用过的人都略知一二,总的来说就是2点: 1.gulp的gulpfile.js 配置简单而且更容易阅读和维护.之所以如此,是因为它们的工作方式不 ...
- gulp批量打包文件并提取公共文件
gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器. browseriyf是模块化打包工具. 一般情况下,Browserify 会把所有的模块打包成单个文件.单个文件在大多数情况下是 ...
- 使用gulp解决RequireJS项目前端缓存问题(二)
1.前言 这一节,我们主要解决在上一节<使用gulp解决RequireJSs项目前端缓存问题(一)>末尾提到的几个问题: 对通过require-config.js引入的js文件修改后,没有 ...
随机推荐
- [转] vim自定义配置 和 在ubnetu中安装vim
Ubuntu 12.04安装vim和配置 问题: ubuntu默认没有安装vim,出现: jyg@ubuntu:~$ vim test.cThe program 'vim' can be foun ...
- 夺命雷公狗----Git---2---基本用法
首先我们来创建一个git仓库,其实命令也是很简单的.. git init 其实在创建完成后,该目录会多了一个.git的文件夹,但该文件夹是隐藏的.... 其实这就是一个git仓库,特别建议不要在这个目 ...
- 源代码编译安装Python3.5.2
由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...
- springMVC使用@ResponseBody返回json
json格式:{"totle":22,"rows":"sss"} map格式:{totle=22, rows=sss} 一.springMV ...
- js计算相隔天数日期
计算40天前的日期: var temp = new Date();console.log(temp);var tempValue = temp.getTime() - 40 * 24* 60*60*1 ...
- IOS程序启动原理
1.Info.plist 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 常见属性(红色 ...
- 关于SSIS中解密FTP字符串的方法
FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过它把自己的PC ...
- SSH框架整合项目(一)——搭建平台和引入依赖
前言:这个项目是我的第一个实验性项目,最初的立意是制作一个个性化的BBS.由于BBS能够综合大部分功能,因此作为练手的项目来说再好不过.从写第一行代码到完成测试版大概历时2周.中间遇到了不少以前在学习 ...
- Dynamics AX 2012 R2 AIF 内部异常
今天,Reinhard发现某个入站端口,突然一直报错: The server was unable to process the request due to an internal erro ...
- cmake 出现问题
问题: CMake Error at CMakeLists.txt:3 (find_package): By not providing "FindOpenCV.cmake" in ...