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的更多相关文章

  1. Linux高性能server编程——Linux网络基础API及应用

     Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...

  2. 服务器编程入门(4)Linux网络编程基础API

      问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字( ...

  3. Linux 高性能服务器编程——Linux网络编程基础API

    问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字(so ...

  4. Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址

    Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...

  5. SVG 学习<四> 基础API

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  6. mongoose 基础api 图表整理

    一.背景 今天看 mongoose 的基础 API,参考了下面的链接做了图表以供查阅. 参考资料: http://www.cnblogs.com/xiaohuochai/p/7215067.html ...

  7. React实例入门教程(1)基础API,JSX语法--hello world

      前  言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发 ...

  8. 【原创】React实例入门教程(1)基础API,JSX语法--hello world

    前  言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发效率 ...

  9. Masonry基础API

    Masonry基础API mas_makeConstraints()    添加约束 mas_remakeConstraints()  移除之前的约束,重新添加新的约束 mas_updateConst ...

随机推荐

  1. Nodejs应用安全备忘录

    本人新博客www.wjs.photo,基于360的firekylin,感兴趣的可以看看哈 本文翻译自 www.risingstack.com ,并非逐字逐句的翻译,有错误的地方请指出,谢谢啦 应用程序 ...

  2. CALayer之mask属性-遮罩

    CALayer有一个属性叫做mask. 这个属性本身就是个CALayer类型,有和其他图层一样的绘制和布局属性. 它类似于一个子图层,相对于父图层(即拥有该属性的图层)布局,但是它却不是一个普通的子图 ...

  3. iOS开发-内存管理

    内存管理 对于这篇呢,其实现在都是ARC模式,正常状态下基本不用我们去手动释放内存,所以如果不是要面试呀.装逼或者扎实功底的,就先别看了或者了解下即可,因为像面试时,有些面试官想看你的基础时,就有些人 ...

  4. grunt--自动化任务快速上手

    这篇文章将带领你用Grunt来提速和优化网站开发的流程.首先我们会简短介绍Grunt的功能,然后我们直接上手,介绍如何用Grunt的不同插件来替你完成网站项目开发中的很多繁冗工作. 接着我们会创建一个 ...

  5. trove显示更多flavor信息

    https://review.openstack.org/#/c/352786/12 这是我目前提交的commit,如果想添加新的flavor信息可以参考这个,有几个需要注意的点是在跑py27的时候, ...

  6. 如何通过fpmmm和zabbix来监控客户机上MariaDB数据库运行情况

    首先在客户机安装MariaDB和zabbix,参考上一篇 安装fpmmm的过程主要参考[1]. 安装fpmmm的依赖 shell> yum install php-cli php-process ...

  7. shell中bash的常见命令

    shell 在计算机科学中,Shell俗称壳,用来区别Kernel(核) Shell分类:1:图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系 ...

  8. 今天学习的裸板驱动之存储控制器心得(初始化SDRAM)

    CPU只管操作地址,而有些地址代表的是某些存储设备. 但是操作这些存储设备需要很多东西,比如需要制定bank,行/列地址等.所以就有了存储管理器,用来处理这种CPU操作的地址和存储设备间的转换. (1 ...

  9. Android抽屉效果 DrawerLayout 入门经验总结

    今天试了试这个抽屉布局的效果,结果很崩溃无语 网上很多资料都千篇一律,感觉都有问题,下面总结下几点经验: 先上个效果图: 1.  layout 布局文件中怎么写: <android.suppor ...

  10. 爬虫代码实现五:解析所有分页url并优化解析实现类

    如图,我们进入优酷首页,可以看到电视剧列表,我们称这个页面为电视剧列表页,而点击进入某个电视剧,则称为电视剧详情页.那么如何获取所有分页以及对应的详情页呢,通过下面的分页得到. 因此,首先,我们将St ...