gulp 英 [gʌlp] 狼吞虎咽地吃;大口地吸javascript
gulp 自己有狼吞虎咽的意思,最主要是经过各类 Transform Stream 来实现文件的处理,而后再进行输出。Transform Streams 是NodeJS Stream 的一种,是可读又可写的,它会对传给它的对象作一些转换的操做。
说人话就是对文件(js,sass,less...)写入内存,进行任务处理,再写出到磁盘。
gulp的只提供几个api:css
gulp.src:获取文件
gulp.dest:写入文件
gulp.tasks:注册任务
gulp.watch:监控文件的改动html
安装 gulp 须要 基于 nodejs ,因此先理解几个概念:java
一、node.js 是什么? Node.js是一个Javascript运行环境(runtime)。 其实是对 google 引擎 v8
作了封装。也就是说,原本一个js 文件是要在浏览器才能执行的 , 但有了 nodeJs 运行环境,你的 IDE 就能够执行 js
文件了,不须要跑在浏览器执行!!node二、npm 是什么? 正由于 nodeJs 的好用 ,因此后人就陆续开发了好多 node 插件 ,而 npm 及是 nodeJs 的
包管理器 ,用于 node 插件管理(包括安装、卸载、管理依赖等)。因此 node 插件(下面的 gulp 工具) 就能够利用 npm 来进行安装或卸载咯。npm三、gulp 是什么? 说白了就是一个 自动构建工具 gulp是基于Nodejs的自动任务运行器,
她能自动化地完成javascript/coffee/sass/less/html/image/css
等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。json
一、安装 node.jsgulp
因此呢,第一步先安装 node.js ----> node.js 官网api
到官网下载下来安装即是,这里很少解释,
而后简单检查一下是否安装成功:浏览器
node -v // 正常状况输出你安装的 node 版本号
npm -v // 正常状况输出你安装的 npm 版本号
二、安装 gulp
接下来安装 gulp
npm install -g gulp
若是提示错误就 从新输入 : sudo npm install -g gulp
-g表示在全局环境安装,以便任何项目都能使用它
稍等片刻,安装完毕一样检查一下版本号,看是否安装成功:
gulp -v // 正常状况输出你安装的 gulp 版本号
接下来新建个文件夹,用来存放你的新工程,
三、在跟目录下建立 package.json文件:
package.json文件有什么用呢?
是为了指明项目在开发环境和生产环境中的node模块依懒关系。其实它还有一个重要的功能就是开源库的版本依赖管理,这个要解释还须要点篇幅,放在文章最后面解释吧
要生成 package.json文件 只需在你的项目根目录执行 npm init 就行:
四、选择安装你所需的依赖
好比上面提到的 检查 js 文件的 gulp-jshint 依赖,将 sass 编译成 css 的 gulp-sass 依赖等等...
执行在你所在的根目录下执行下面命令:
npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev
这时,你的项目目录就有以下内容:
五、新建gulpfile.js 文件
为何 gulp 项目能自动检测 js 代码的错误呢,就应为 有了 gulpfile文件在起做用:
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'); // 检查脚本 gulp.task('lint', function() { gulp.src('./js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); // 编译Sass , 会将 scss/文件夹下的 .scss 文件编译成 .css 文件放在 /css文件夹下 gulp.task('sass', function() { gulp.src('./scss/*.scss') .pipe(sass()) .pipe(gulp.dest('./css')); }); // 合并,压缩文件,将 js文件夹下的js文件合并压缩成 all.js 放在 /dist文件夹下 gulp.task('scripts', function() { gulp.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', 'sass', 'scripts'); // 监听文件变化,有了监听,当你编写 js 或 sacc 文件时就会自动编译 gulp.watch('./js/*.js', function(){ gulp.run('lint', 'sass', 'scripts'); }); });
将上面的代码 gulpfile.js 保存到 更目录下就能够开始你的 项目咯!
六、运行 带有gulp构建工具的 项目:
上面键好项目后,建立个 js文件夹,里面有两个测试用的 js 文件
里面的代码是:
$(function () { alert(" test_js1"); });
七、而后启动构建工具 gulp
用 WebStrom 打开你的项目:
当编译不成功,出现 不支持 gulp.run 怎么办
将代码:
// 默认任务 gulp.task('default', function(){ gulp.run('lint', 'sass', 'scripts'); // 监听文件变化,有了监听,当你编写 js 或 sacc 文件时就会自动编译 gulp.watch('./js/*.js', function(){ gulp.run('lint', 'sass', 'scripts'); }); });
替换成下面的
// 默认任务 gulp.task('default', function(){ // 监听文件变化 gulp.watch('./js/*.js', ['lint', 'sass', 'scripts']); });
你的项目多出了这些文件:
打开 all.js
发现它将 我们建立的两个 js 文件合并到一块了!!!
这里小提示一下,为何要把 js 文件 合并到一个
总的js文件里呢?减小网络请求呀,一个js文件才请求一次,要是你的项目有多个js文件那不得请求屡次,不利于优化。 all.min.js 是对
all.js 的压缩
这就是 自动化构建工具 gulp !!!