gulp模块的方法
1. src()
gulp模块的src方法,用于产生数据流。它的参数表示所要处理的文件,这些指定的文件会转换成数据流。
js/app.js 指定确切的文件名 js/*.js 某个目录所有后缀名为js的文件 js/**/*.js 某个目录及其所有子目录中所有后缀名为js的文件 !js/app.js 除了js/app.js以外所有文件 *.+(js css)匹配项目根目录下,所有后缀名为js或css的文件
src方法的参数还可以是一个数组,用来指定多个成员
gulp.src(['js/**/*.js','!js/**/*.min.js'])
2 dest()
dest方法将管道的输出写入文件,同时将这些输出继续输出,所以可以依次调用多次dest方法,将输出写入多个目录。如果有目录不存在,将会被重建。
gulp.src('./client/templates/*.jade') .pipe(jade()) .pipe(gulp.dest('./build/template')) .pipe(minify()) .pipe(gulp.dest('./build/minified_templates'));
dest方法还可以接受第二个参数,表示配置对象
gulp.dest('build',{ cwd:'./app', mode:'0644'})
配置对象有两个字段。cwd字段指定写入路径的基准目录,默认是当前目录;mode字段指定写入文件的权限,默认是0777.
3.task()
task方法用于定义具体的任务。它的第一个参数是任务名,第二个参数是任务函数。
gulp.task('greet',function(){ console.log('Hello world'); });
task方法还可以指定按顺序运行的一组任务
gulp.task('build',['css','js','imgs']);
指定任务build,它由css,js,imgs三个任务所组成。task方法会并发执行这三个任务。注意,每个任务都是异步调用,所以没有办法保证js任务的开始运行的时间。
如果希望各个任务严格按照次序运行,可以把掐一个任务写成后一个任务的依赖模块。
gulp.task('css',['greet'],function(){ //deal with css here});
css任务依赖greet任务,所以css一定会在greet运行完成后在运行。
task方法的回调函数,还可以接受一个函数作为参数,这对执行异步任务非常有用.
//执行shell命令var exec=require('child_process').exec; gulp.task('jekyll',function(cb){//build jekyllexec('jekyll build',function(err){ if(err) return cb(err);//return error cb();//finished task}) })
如果一个任务的名字为default,就表明它是默认任务,在命令行直接输入gulp命令,就会运行该任务。
gulp.task('default',function(){ //default task})//或者gulp.task('default',['styles','jshint','watch']);
执行的时候,直接使用gulp,就会运行styles,jshint,watch三个任务。
4 watch()
watch方法用于指定需要监视的文件。一旦这些文件发生变动,就运行指定任务。
gulp.task('watch',function(){ gulp.watch('templates/*.tmpl.html',['build']); });
代码指定,一旦templates目录中的模板文件发生变化,就会运行build任务。
watch方法也可以用回调函数,代替指定的任务
gulp.watch('templates/*.tmpl.html',function(event){ console.log('Event type: '+event.type); console.log('Event path: '+event.path); });
另一种写法是watch方法所监控的文件发生变化时(修改、增加、删除文件),就会触发change事件,可以对change事件指定回调函数
var watcher=gulp.watch('templates/*.tmpl.html',['build']); watcher.on('change',function (event){ console.log('Event type: '+event.type); console.log('Event path: '+event.path); });
除了change事件,watch方法还可能触发以下事件
end 回调函数运行完毕时触发
error 发生错误时触发
ready 当开始监听文件时触发
nomatch 没有匹配的监听文件时触发
watcher对象还包含其他一些方法
watcher.end() 停止watcher对象,不会再调用任务或回调函数
watcher.files() 返回watcher对象监视的文件
watcher.add(glob)增加所要监视的文件,它还可以附件第二个参数,表示回调函数
watcher.remove(filepath) 从watcher对象中移走一个监听的文件
5.gulp-livereload模块
gulp-livereload模块用于自动刷新浏览器,反映出源码的最新变化。它除了模块以外,还需要在浏览器中安装插件,用于配合源码变化。
var gulp=require('gulp'), less=require('gulp-less'), livereload=require('gulp-livereload'), watch=require('gulp-watch'); gulp.task('less',function(){ gulp.src('less/*.less') .pipe(watch("less/*.less") ) .pipe(less()) .pipe(gulp.dest('css')) .pipe(livereload()); })
代码用来监视less文件,一旦编译完成,就会自动刷新浏览器。
6 gulp-load-plugins模块
一般情况下,gulpfile.js中的模块需要一个个加载
var gulp=require('gulp'), jshint=require('gulp-jshint'), uglify=require('gulp-uglify'), concat=require('gulp-concat'); gulp.task('js',function(){ return gulp.src('js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')) .pipe(uglify()) .pipe(concat('app.js')) .pipe(gulp.dest('build')); })
代码中除了gulp模块以外,还加载另外三个模块
这种加载的写法比较麻烦,使用gulp-load-plugins模块,可以加载package.json文件中所有的gulp模块。
var gulp=require('gulp'), gulpLoadPlugins=require('gulp-load-plugins'), plugins=gulpLoadPlugins(); gulp.task('js',function(){ return gulp.src('js/*.js') .pipe(plugins.jshint()) .pipe(plugins.jshint.reporter('default')) .pipe(plugins.uglify()) .pipe(plugins.concat('app.js')) .pipe(gulp.dest('build')); })
本文讲解了gulp模块的方法,更多相关内容请关注php中文网。
相关推荐:
以上是gulp模块的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

本文讨论了使用浏览器开发人员工具的有效JavaScript调试,专注于设置断点,使用控制台和分析性能。

本文说明了如何使用源地图通过将其映射回原始代码来调试JAVASCRIPT。它讨论了启用源地图,设置断点以及使用Chrome DevTools和WebPack之类的工具。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

本教程将介绍如何使用 Chart.js 创建饼图、环形图和气泡图。此前,我们已学习了 Chart.js 的四种图表类型:折线图和条形图(教程二),以及雷达图和极地区域图(教程三)。 创建饼图和环形图 饼图和环形图非常适合展示某个整体被划分为不同部分的比例。例如,可以使用饼图展示野生动物园中雄狮、雌狮和幼狮的百分比,或不同候选人在选举中获得的投票百分比。 饼图仅适用于比较单个参数或数据集。需要注意的是,饼图无法绘制值为零的实体,因为饼图中扇形的角度取决于数据点的数值大小。这意味着任何占比为零的实体

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
