前端自动化工具
参考
gulp getting started
gulp api
gulp 入门指南
安装
1 | // 安装gulp-cli |
注:
本文安装的gulp版本为4.0
目前(2018/1)
使用 npm install --save-dev gulp 命令安装的gulp版本为3.9
而 npm install --save-dev gulp@next (多了@next)命令安装的gulp版本为4.0
相较于gulp3,gulp4的语法有一些改动
如果想查看版本信息,可用gulp -v查询
1 | >gulp -v |
测试是否安装成功
在项目根目录下新建gulpfile.js文件,填入以下内容
1 | var gulp = require('gulp'); |
然后打开cmd,在项目根目录运行命令
1 | gulp |
如果出现下列提示,则安装成功
1 | Using gulpfile ~/my-project/gulpfile.js |
常用插件
如需同时安装多个插件,用空格将多个插件名隔开即可,例如
1 | npm install --save-dev gulp-sass gulp-babel babel-preset-env babel-cli babel-preset-env gulp-file-include |
gulp-sass
将SCSS文件编译为CSS
npm gulp-sass
安装命令
1 | npm install gulp-sass --save-dev |
gulpfile.js文件设置
1 | ; |
运行方式
1 | // 项目根目录下输入 |
gulp-babel
将ES6代码转换为ES5
安装命令
1 | npm install --save-dev gulp-babel babel-preset-env |
gulpfile.js设置
1 | const gulp = require('gulp'); |
运行方式
1 | gulp babel |
gulp-file-include
HTML复用/拆分.在html文档中,载入其他html文档,类似css的import
安装命令
1 | npm install gulp-file-include |
gulpfile.js设置
1 | gulp = require('gulp'); |
使用方法
假设有文件header.html,其内容为
1 | <div></div> |
如需在其它html中载入header.html,使用@@include关键字即可
1 | <body> |
编译结果
1 | <body> |
gulpfile.js设置
1 | var gulp = require('gulp'); |
browser-sync
多浏览器同时自动刷新,无需安装编辑器/浏览器插件
安装browser-sync
1 | npm install browser-sync --save-dev |
gulpfile.js设置
1 | var browserSync = require('browser-sync').create(); |
gulp-font-spider
字蛛的gulp插件,通过扫描CSS @fontface和HTML文档内容,缩小字体文件体积
windows下的字蛛通过node-gyp编译,需要windows-build-tools运行环境
如果出现node-gyp编译失败的提示.先用uninstall命令删除gulp-font-spider,安装windows-build-tools.再重新安装gulp-font-spider
安装命令
1 | npm install gulp-font-spider --save-dev |
使用方式
gulp-font-spider会自动搜索使用@fontface载入的字体,自动简化ttf文件大小
1 | @font-face { |
API
src 监听文件位置
gulp.src(globs[, options])
- globs 文件路径
1 | // 单个文件 |
常用的options
options.buffer
是否返回buffer,默认为true
为false时返回stream, 这在处理大文件时很有用
注: 部分插件可能不支持stream
options.read
默认值为true.为false不读取文件,返回null
options.base
设置输出文件的路径结构
1 | // gulp.dest('build')的作用是输出文件到build文件夹下 |
dest 输出文件
输出文件,可通过pipe多次调用
gulp.dest(path[, options])
1 | // 将app/index.html输出到build和test文件夹下 |
task 创建任务
gulp.task([name,] fn)
- name 任务名
- fn 被执行的函数,或gulp.series gulp.parallel gulp.lastRun
1 | // 创建任务copy,作用是复制html文件到build文件夹下 |
调用copy任务
1 | // 在pipe中调用 |
series 依序运行多个任务
gulp.series(...tasks)
依序调用一系列任务/函数.当发生错误时,后边的任务不会被执行
1 | gulp.task('one',function(done){ |
parallel 并行运行多个任务
gulp.parallel(...tasks)
类似series,区别是parallel并行调用任务.即使有一个任务出错,后边的函数都会被执行
如果一堆任务中有watch,建议使用parallel
因为用series的话,watch会一直运行下去,导致后面的任务无法被执行
watch 监控文件
gulp.watch(globs[, opts][, fn])
监控文件,当发生变化时,调用fn
1 | gulp.watch('app/**/*', gulp.parallel('copy')); |