gulp4个基础API
Gulp.src(globs[, options])
此接口会匹配工作目录下指定规则的文件并返回提供给下一个插件管道使用。其中globs就是匹配格式,options是一些额外参数。
gulp.src('src/scss/master.scss')
.pipe(sass())
.pipe(gulp.dest('./dist’));
以上代码匹配master.scss文件返回给管道给sass插件进行编译操作,编译完成后送入下一个管道给gulp.dest接口输出到dist目录下。
globs
类型:字符串或者数组
此参数为文件匹配规则,例如./src/*/.scss将会匹配工作目录下src目录及子目录下所有scss文件格式的文件。字符匹配规则前带!则会排除此匹配的文件,例如:
gulp.src([
'src/js/intro.js',
'src/js/body.js',
'!src/js/others.js',
'src/hs/end.js'
]);
此将会按顺序匹配intro.js,body.js,end.js,排除了others.js
options
类型:对象
options.buffer (默认:true)
当设置为false的时候会把file.contents作为数据流(stream)返回而不是整个缓冲文件(buffer files),这个选项在处理较大文件的时候比较有效。但是:很多插件并不支持数据流处理。
options.read (默认:true)
当设置为false的时候并不会读取文件而且返回file.contents为空。
options.base (默认:匹配规则前的目录地址)
我们直接用代码演示吧:
gulp.src('src/js/**/*.js') //如果匹配到src/js/vendors/a.js, 那么base是src/js/
.pipe(minify())
.pipe(gulp.dest('dist')); //写入到dist/vendors/a.js
gulp.src('src/js/**/*.js', { base: 'src' }) //如果匹配到src/js/vendors/b.js
.pipe(minify())
.pipe(gulp.dest('dist')); //写入到dist/js/vendors/b.js
gulp.dest(path[, options])
此接口直接写入到文件里。(如果文件夹不存在则会创建对应文件夹)
gulp.src('src/js/body.js')
.pipe(minify())
.pipe(gulp.dest('dist/js')); //写入到dist/js/body.js
path
类型:字符串或者函数
具体输出目录或者一个函数返回目录
options
类型:对象
options.cwd(默认:process.cwd())
只有当输出路径为相对路径的时候才有效(一般用不到)
options.mode(默认:0777)
新建目录的权限(一般用不到)
gulp.task(name[, deps, fn])
定义一个需要自动执行的任务
gulp.task('sass', function() {
gulp.src('src/scss/master.scss')
.pipe(sass())
.pipe(gulp.dest('dist/css'));
});
gulp.task('styles',['sass'], function() {
gulp.src('./dist/css/public.css')
.pipe(minifycss())
.pipe(rename('public.min.css'))
.pipe(gulp.dest('dist/css'));
});
通过在终端运行gulp styles执行styles这个任务,此任务前先执行sass任务,完毕后再进行此任务,将public.css复制一份进行压缩并重命名为public.min.css到dist/css目录下。这里需要注意的是前提依赖任务如果有多个,一般它们并不会按照顺序执行,而是异步执行的
gulp.watch(glob [, opts], tasks)或gulp.watch(glob [, opts, cb])
自动监视文件变化并执行指定的任务。
//监视'src/js/'目录下的所有js文件,如果有变动则立即执行uglify任务
gulp.watch('src/js/**/*/js', ['uglify']);
gulp.watch(glob[, opts, cb])
自动监视文件变化并执行回调函数。
event.type
类型:字符串
事件的类型,值为:added, changed, deleted.
event.path
类型:字符串
触发事件的文件地址
gulp.watch('js/**/*.js', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});
第二节:实战项目
gulp4个基础API的更多相关文章
- Linux高性能server编程——Linux网络基础API及应用
Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...
- 服务器编程入门(4)Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字( ...
- Linux 高性能服务器编程——Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字(so ...
- Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...
- SVG 学习<四> 基础API
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- mongoose 基础api 图表整理
一.背景 今天看 mongoose 的基础 API,参考了下面的链接做了图表以供查阅. 参考资料: http://www.cnblogs.com/xiaohuochai/p/7215067.html ...
- React实例入门教程(1)基础API,JSX语法--hello world
前 言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发 ...
- 【原创】React实例入门教程(1)基础API,JSX语法--hello world
前 言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发效率 ...
- Masonry基础API
Masonry基础API mas_makeConstraints() 添加约束 mas_remakeConstraints() 移除之前的约束,重新添加新的约束 mas_updateConst ...
随机推荐
- Linux-gate.so技术细节
1. linux-gate.so是什么参考这里:http://www.trilithium.com/johan/2005/08/linux-gate/简而言之,linux-gate.so是为了实现用户 ...
- VS超强调试技巧--忍不住想赞一下
你是否曾遇到一个项目启动都要半分钟? 启动后调试或突然看到有行代码写错了?然后开始了: 处理步骤:停止运行->修改代码->重新启动(10-30秒)->又写错了->又要修改-&g ...
- 结构-行为-样式-PS笔记
1.矩形选框,按住Shift就可以成为正圆或者正方形.按住ALt就可以控制圆心的位置: 2.美颜:滤镜--模糊--回到开始--历史记录工具,去掉不要的地方. 3.套索工具双击闭合:4.钢笔工具是做选区 ...
- JAVA 代码开发规范
一.开发工具规范: 1. 开发工具经项目负责人调试后统一确定. 2. 开发工具一经确定不允许集成任何非统一插件,若有需要,经项目负责人同意后统一为 项目组成员添加. 3. 开发工具的编码格式不允许修改 ...
- 链接中的href=#是什么意思呢
链接当前页面. ------------------- 通常有如下用法: <a href="#" onclick="window.close()"> ...
- 一名测试初学者听JAVA视频笔记(一)
搭建pho开发环境与框架图 韩顺平 第一章: No1 关于文件以及文件夹的管理 将生成的文本文档做成详细信息的形式,显示文件修改时间以及文件大小,便于文件查看和管理,也是对于一名IT人士高效能工作的 ...
- Linux下产生随机密码10方法
有特殊符号的: cat /dev/urandom | tr -dc "a-zA-Z0-9_+\~\!\@\#\$\%\^\&\*"| fold -w 16 |head -n ...
- 批处理+组策略 实现规定时间段无法开机and定时关机
某爱熬夜的人对付自己的东西 1.shutdown命令 shutdown -a #取消现有的shutdown计划 shutdown -s -t [time] #设定时间关机 shutdown -r -t ...
- android 蓝牙连接与通讯(Bluetooth)
最近做了一个小项目,关于蓝牙的一个智能硬件.其中涉及到了蓝牙模块的操作.特记下蓝牙模块的操作过程.只记录下关于蓝牙部分的操作,具体业务逻辑不涉及其中.重点是记录下蓝牙的扫描.链接.通讯. 在使用蓝牙模 ...
- 移动APP脚本录制
1.安装补丁--LR_03105_patch4----mobile app(http/html) 2.录制软件和移动设备同处同一环境(160wifi连接移动设备),创建wifi热点 3.创建脚本-协议 ...