gulp用法
关于gulp
gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。
在 Web 前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”。
入门指南
安装
sudo npm install -g gulp
安装完成后,可以用gulp -v查看是否安装成功。
OK,准备工作完成了~
gulpfile.js
在根目录下创建一个名字叫gulpfile.js的文件。
文件格式为:
var gulp = require("gulp");
gulp.task('default',function(){
......
})
//默认名为default的任务将会被执行。
运行gulp
gulp
API
-
gulp.src(globs[, options]))
说明,用于指出gulp要进行处理的文件的路径,借鉴了管道(pipe)的思想。前一级的输出,直接变成后一级的输入。
globs:要处理的文件的匹配路径。可以用一些通配符。
'src/c.css' 具体要匹配的文件名称。
‘src/*.js’ 匹配所有js文件。
'src/**/*.js' 匹配src下边任意文件夹下的所有js文件
'{}匹配多个属性'。'src/{a,b}.css' 匹配src文件下的a.js和b.js
'!'排除文件,'!src/c.css',不包括src下的c.css文件。
var gulp = require('gulp'); var less = require('gulp-less'); gulp.task(default,function(){ gulp.src('./src/*.less') .pipe(less()) .pipe(gulp.dest('./css')); })
第二个参数选填,有三个属性,buffer,read,base
buffer:类型Boolean,默认true,设置成flase时候,将返回file.content流,处理大文件的时候有用。
read:类型Boolean,默认true,设置成false的话,将不会执行文件读取操作,返回null
base:类型String,设置输出路径以某个路径的某个组成部分为基础向后拼接。
-
gulp.dest(path[, options])
能被 pipe 进来,并且将会写文件。并且重新输出(emits)所有数据,因此你可以将它 pipe 到多个文件夹。如果某文件夹不存在,将会自动创建它。
gulp.src('./client/templates/*.jade') .pipe(jade()) .pipe(gulp.dest('./build/templates')) .pipe(minify()) .pipe(gulp.dest('./build/minified_templates'));
path:路径,没有文件会自动创建新文件。
options:类型,可选,是个Object,有两个值。
options.cwd: 类型:String 默认:process.cwd():前脚本的工作目录的路径 当文件输出路径为相对路径将会用到;
options.mode: 类型:String 默认:0777 指定被创建文件夹的权限;
这两个值用的比较少
gulp.task(name[, deps], fn))
这个方法定义了一个gulp任务。
name:任务的名称
deps,可选项,该任务所依赖的任务,即执行外deps指定的任务之后才能完成当前定义的任务。
fn:任务相关的操作的回调函数
gulp.task('textLess',function(){
gulp.src('./src/*.less')
.pipe(less())
.pipe(gulp.dest('./css))
});
gulp.task('minifyCss',[textLess],function(){
gulp.src(./css/*.css)
.pipe(minifyCss())
.pipe(gulp.dest(./dist/css));
})
gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])
用于监听文件变化,文件发生修改就会执行指定的任务。
globs:需要处理的源文件路径
opts
tasks:执行任务的名称数组
cb:文件变化的回调函数
gulp.task('watch1',function(){
gulp.watch('./less/*.less',[testLess])
});
//有修改的时候出发gulp任务
gulp.task('watch2',function(event){
gulp.watch('./less/*.less',function(event){
console.log('file has changed');
console.log(event);
})
})
//有修改的时候执行回调函数
常用的gulp模块
gulp-uglify 压缩js文件
gulp-clean-css 压缩css文件(替代gulp-minify-css)
imagemin 压缩图片
gulp-less 编译less
gulp-ruby-sass 编译sass,建议用less
gulp-autoprefixer 处理css前缀
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。