[TOC]
# 准备工作
最开始,当然要先安装node和npm,然后新建自己的项目(ps:项目名不能是‘gulp’),
然后初始化一下:
npm init -y
生成packge.json
首先我们来看一下项目的目录结构:
```
如图:
目录css、images、js都是你项目原本的文件目录
而dist目录以及目录下的css、images、js目录就是将文件压缩后存放到的相应目标目录
接下来,就可以进入正题了
```
# 安装gulp
在你的项目目录下打开命令行界面
首先要全局安装一下gulp,输入:
npm i -g gulp
然后,要把gulp安装到本地:
npm i -D gulp
# 编写gulpfile.js文件
首先在项目目录下新建一个gulpfile.js文件:
# 导包
引入所需要的包:
```
var gulp = require('gulp');
var uglify = require('gulp-uglify'); ////用于压缩js文件
var minifyCSS = require('gulp-minify-css'); ////用于压缩css文件
var imagemin = require('gulp-imagemin'); ////用于压缩image文件
gulp-uglify、gulp-minify-css、gulp-imagemin需要在本地安装一下,
```
同理在项目目录下打开命令行界面,输入相应命令:
```
npm i -D gulp-uglify
npm i -D gulp-minify-css
npm i -D gulp-imagemin
```
安装成功后,继续在gulpfile.js中写代码:
新建压缩任务
```
/////新建一个‘script’任务 /////用于压缩js文件
gulp.task('script',function(){
/////找到需要压缩的文件
gulp.src('js/**/*.js') //// /**/ 表示js目录下的任意层级的目录
/////压缩文件
.pipe(uglify())
/////另存压缩后文件
.pipe(gulp.dest('dist/js'));
});
```
同理,也可以新建压缩css、images文件的任务:
```
gulp.task('css',function(){
gulp.src('css/**/*.css')
.pipe(minifyCSS())
.pipe(gulp.dest('dist/css'));
});
gulp.task('images',function(){
gulp.src('images/**/*.*')
.pipe(imagemin({progressive:true}))
.pipe(gulp.dest('dist/images'));
});
```
到此,压缩的任务就完成了,在命令行界面可以输入 ‘gulp’ 空格 任务名称 来执行压缩,例如:
```
gulp script
```
执行完成后,在dist目录的相应目录下可以找到压缩后的文件
# 自动压缩任务
在默认情况下,我们每次修改文件都要去执行压缩任务才能得到压缩后的文件,
为了方便,我们使用watch方法来新建一个监听任务,每次修改文件,系统会自动执行压缩:
```
gulp.task('auto',function(){
////////监听文件,当文件被修改后自动执行压缩任务
////////第一个参数:监听的目标文件
///////第二个参数:监听到修改后执行的压缩任务
gulp.watch('js/**/*.js',['script']);
gulp.watch('css/**/*.css',['css']);
gulp.watch('images/**/*.*',['images']);
});
```
默认任务
```
/////////定义默认任务,使用gulp 启动数组里的所有任务
gulp.task('default',['images','css','script','auto']);
```
新建默认任务后,在命令行执行:
```
gulp
```
即可执行所有数组中的任务
- javascript封装
- jquery封装
- layui封装
- 基本知识
- 匿名函数
- 严格模式
- 代码规范工具
- 使用JSHint和JSLint
- 构建
- Grunt
- gulp
- Gulp使用入门操作十一步压缩JS
- 注意
- 初级
- 中级
- 高级
- 将es6代码转成es5
- 我常用的
- 报错处理
- 《编写可维护的Javascript》
- 第1章:基本的格式化
- 缩进层级
- 语句结尾
- 行的长度
- 换行
- 空行
- 命名
- 变量和函数
- 常量
- 构造函数
- 直接量
- 第2章:注释
- 单行注释
- 多行注释
- 使用注释
- 文档注释
- 第3章:语句和表达式
- 花括号的对齐方式
- 块语句间隔
- switch语句
- 第4章:变量函数运算符
- 变量声明
- 函数声明
- 函数调用间隔
- 立即调用函数
- 严格的模式
- 相等
- 第5章:UI的松耦合
- 什么是松耦合
- 将javascript从css中抽离
- 将css从javascript中抽离
- 将javascript从html中抽离
- 将html从javascript中抽离
- 第6章:避免使用全局变量
- 全局变量带来的问题
- 意外的全局变量
- 单全局变量方式
- 零全局变量
- 第7章:事件处理
- 典型用法
- 规则1:隔离应用逻辑
- 规则2:不要分发事件对象
- 第8章:避免“空比较”
- 检测原始值
- 检测应用值
- 检测属性
- 第9章:将配置数据从代码中分离出来
- 什么是配置数据
- 抽离配置数据
- 保存配置数据
- 第10章:抛出自定义错误
- 错误的本质
- 在javascript抛出错误
- 抛出错误的好处
- 何时抛出错误
- try-catch语句
- 错误类型
- 第11章:不是你的对象不要动
- 什么是你的
- 原则
- 更好的途径
- 关于Polyfill的注释
- 阻止修改
- 第12章:浏览器嗅探
- User-Agent嗅探
- 特性检测
- 避免特性推断
- 避免浏览器推断
- 应当如何取舍
- 第13章:目录和文件结构
- 最佳实践
- 基本结构
- 第14章:Ant
- 安装
- 配置文件
- 执行构建
- 目标操作的依赖
- 属性
- Buildr项目
- 第15章:校验
- 查找文件
- 任务
- 增强的目标操作
- 其他方面的改进
- Buidr任务
- 第16章:文件的合并与加工
- 任务1
- 行尾结束符
- 文件头和文件尾
- 加工文件
- 第17章:文件的精简与压缩
- 文件精简
- 压缩
- 第18章:文档化
- JSDoc Toolkit
- YUI DOC
- 第19章:自动化测试
- YUI Test Selenium引擎
- Yeti
- PhantomJS
- JsTestDriver
- 第20章:组装到一起
- Javascript编码风格指南