gulpfile笔记
gulp的使用流程:
首先通过gulp.src()方法获取到我们想要处理的文件流,然后把文件流通过pipe方法导入到gulp的插件中,最后把经过插件处理后的流再通过pipe方法导入到gulp.dest()中
1、gulp.task(name[,desp], fn);
name: 执行的任务名
desp: 任务执行需要依赖的任务
PS:如果依赖的任务是异步操作的话,那么就不会等待依赖的任务执行完再去执行该任务,但是如果想要让异步的任务执行完再去执行该任务的话,可以通过以下三种方法:
(1)通过一个毁掉函数,将回调函数放在异步执行操作里面,来通知gulp这个异步操作已经完成,这个回调函数就是任务函数的第一个参数
gulp.task('one',function(callback){//one是一个异步执行的任务setTimeout(function(){console.log('one is done');callback(); //执行回调,表示这个异步任务已经完成},5000);});//这时two任务会在one任务中的异步操作完成后再执行gulp.task('two',['one'],function(){console.log('two is done');});gulp.task("default", ["two"], function() {console.log("default is runing");});
(2)定义任务时返回一个流对象。适用于任务就是操作gulp.src获取到的流的情况
gulp.task('one',function(cb){var stream = gulp.src('client/**/*.js').pipe(dosomething()) //dosomething()中有某些异步操作.pipe(gulp.dest('build'));return stream;});
(3)返回一个promise对象
//一个著名的异步处理的库 https://github.com/kriskowal/qvar Q = require('q');gulp.task('one',function(cb){var deferred = Q.defer();// 做一些异步操作setTimeout(function() {deferred.resolve();}, 5000);return deferred.promise;});
2、gulp.dest(path)
path: 文件的写入位置,需要注意的是:只能用来指定要生成的文件目录,不能指定生成的文件名,生成的文件名是有导入到它的文件流决定的,如果想要改变文件名的话,使用gulp-rename
3、gulp.src(globs)
globs: 文件匹配模式,用来匹配文件路径(包括文件名),当有多种匹配时可以使用数组,但是使用数组的时候,如果要用排除模式(!单个匹配模式)的话,不能将要排除的放在数组的第一个。。。
【* 匹配文件路径中的0个或多个字符,但不会匹配路径分隔符,除非路径分隔符出现在末尾** 匹配路径中的0个或多个目录及其子目录,需要单独出现,即它左右不能有其他东西了。如果出现在末尾,也能匹配文件。? 匹配文件路径中的一个字符(不会匹配路径分隔符)[...] 匹配方括号中出现的字符中的任意一个,当方括号中第一个字符为^或!时,则表示不匹配方括号中出现的其他字符中的任意一个,类似js正则表达式中的用法!(pattern|pattern|pattern) 匹配任何与括号中给定的任一模式都不匹配的?(pattern|pattern|pattern) 匹配括号中给定的任一模式0次或1次,类似于js正则中的(pattern|pattern|pattern)?+(pattern|pattern|pattern) 匹配括号中给定的任一模式至少1次,类似于js正则中的(pattern|pattern|pattern)+*(pattern|pattern|pattern) 匹配括号中给定的任一模式0次或多次,类似于js正则中的(pattern|pattern|pattern)*@(pattern|pattern|pattern) 匹配括号中给定的任一模式1次,类似于js正则中的(pattern|pattern|pattern)】
4、gulp.watch(glob, tasks)
glob: 监视的文件匹配模式
tasks: 文件变化后要执行的任务,为一个数组
5、重命名
比如:
rename = require('gulp-rename'),
pipe(rename('jquery.min.js')) //会将jquery.js重命名为jquery.min.js
6、js文件压缩
比如:
uglify = require("gulp-uglify");
.pipe(uglify()) //使用uglify进行压缩,更多配置请参考:
7、css文件压缩
比如:
minifyCss = require("gulp-minify-css");
.pipe(minifyCss()) //压缩
8、html文件压缩
比如:
minifyHtml = require("gulp-minify-html");
.pipe(minifyHtml()) //压缩
9、图片压缩
比如:
var imagemin = require('gulp-imagemin');
var pngquant = require('imagemin-pngquant'); //png图片压缩插件
.pipe(imagemin({
progressive: true,
use: [pngquant()] //使用pngquant来压缩png图片
}))
10、文件合并
比如:
concat = require("gulp-concat");
.pipe(concat('all.js')) // 合并匹配到的js文件并命名为 "all.js"
11、less和sass的编译
(1)sass
sass = require("gulp-sass");
.pipe(sass())
(2)less
less = require("gulp-less");
.pipe(less())
12、js代码检查
比如:
jshint = require("gulp-jshint");
.pipe(jshint())
.pipe(jshint.reporter('default'))
// npm install --save-dev jshint-stylish
.pipe(jshint.reporter('jshint-stylish'))
14、自动刷新
比如:
browserSync = require("browser-sync").create(),
reload = browserSync.reload; // 自动刷新
gulp.task("browser-sync", function() {
browserSync.init(resource.html, {
server: {
baseDir: ["."], //or [,,,,,],
index: "build/index.html"
}
});
});
15、加载插件+重命名
var plugins = require("gulp-load-plugins")({
rename: {
"gulp-make-css-url-version": "cssver",
"gulp-content-includer": "includer",
"gulp-html-extend": "htmlextend",
"gulp-minify-css": "minicss",
"gulp-rev-append": "revap"
}
});
15、notify:消息提示
.pipe(plugins.notify({ message: 'Styles task complete' }));
16、rename:重命名
.pipe(plugins.rename({suffix: '.min'}))
17、changed: 编译或打包改变过的文件
.pipe(plugins.changed(dist, {extension: ".js"}))
转载于:https://www.cnblogs.com/qzccl/p/5712802.html
gulpfile笔记相关推荐
- 入门学习webpack笔记
注意事项: 1.预热知识:前端模块化.commonJS最好提前了解.commonJS语法最好熟悉. 2.commonJS中,module表示当前模块,module.exports(或者exports) ...
- 《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练
一.用gulp 构建前端页面(1)---静态构建 npm install gulp-template --save-dev 通过这个插件,我们可以像写后台模板(譬如PHP)一样写前端页面.我们首先学习 ...
- gulp学习笔记,基本使用流程,基本函数,使用监听、插件
学习gulp的简单笔记.原教学视频:https://www.bilibili.com/video/BV1NE411T7Z2?p=396. gulp基本使用流程 初始化项目目录: cnpm init / ...
- 【读书笔记】知易行难,多实践
前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...
- 【运维学习笔记】生命不息,搞事开始。。。
001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...
- SSAN 关系抽取 论文笔记
20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...
- pandas以前笔记
# -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
最新文章
- manila 文件共享存储服务
- qt udp多线程收发过程_! udp多线程的有关问题
- 基于visual Studio2013解决面试题之0402合并升序链表并去重
- Quartus II 订购版 和 网络版 软件功能 区别
- 江苏单招试题计算机原理及答案,江苏省对口单招计算机组装与维修计算机原理考题分类汇总.docx...
- Xcode 9.0 beta 3 GPUImage崩溃问题(presentBufferForDisplay)
- ONLINE_JUDGE
- 百度元老黯然离职是被开除?向海龙回应...
- 微服务 mysql 连接池_【mysql】druid,连接池和微服务的问题
- P1144 最短路计数
- IOS学习笔记07---C语言函数-scanf函数
- 海龟绘图两小时上手C语言 - 3 正方形螺旋线
- 【Oracle】查询当前SCN
- 通用 字符串工具类
- 第五次作业11111
- 去掉网页从网页中拷贝到word中段落带有的背景颜色
- 去掉你代码里的 document.write(script...
- 骆小刚:Linux后台服务启动方式systemd、daemon、nohup大比拼
- Maven整合阿里云云效制品仓库 Packages(私服)
- qcustomplot 峰值_QT 本程序可读取Yokogawa 光谱仪多个数据文件(CSV格式)并寻峰 - 下载 - 搜珍网...