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笔记相关推荐

  1. 入门学习webpack笔记

    注意事项: 1.预热知识:前端模块化.commonJS最好提前了解.commonJS语法最好熟悉. 2.commonJS中,module表示当前模块,module.exports(或者exports) ...

  2. 《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练

    一.用gulp 构建前端页面(1)---静态构建 npm install gulp-template --save-dev 通过这个插件,我们可以像写后台模板(譬如PHP)一样写前端页面.我们首先学习 ...

  3. gulp学习笔记,基本使用流程,基本函数,使用监听、插件

    学习gulp的简单笔记.原教学视频:https://www.bilibili.com/video/BV1NE411T7Z2?p=396. gulp基本使用流程 初始化项目目录: cnpm init / ...

  4. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  5. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  6. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  7. pandas以前笔记

    # -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...

  8. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  9. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

最新文章

  1. manila 文件共享存储服务
  2. qt udp多线程收发过程_! udp多线程的有关问题
  3. 基于visual Studio2013解决面试题之0402合并升序链表并去重
  4. Quartus II 订购版 和 网络版 软件功能 区别
  5. 江苏单招试题计算机原理及答案,江苏省对口单招计算机组装与维修计算机原理考题分类汇总.docx...
  6. Xcode 9.0 beta 3 GPUImage崩溃问题(presentBufferForDisplay)
  7. ONLINE_JUDGE
  8. 百度元老黯然离职是被开除?向海龙回应...
  9. 微服务 mysql 连接池_【mysql】druid,连接池和微服务的问题
  10. P1144 最短路计数
  11. IOS学习笔记07---C语言函数-scanf函数
  12. 海龟绘图两小时上手C语言 - 3 正方形螺旋线
  13. 【Oracle】查询当前SCN
  14. 通用 字符串工具类
  15. 第五次作业11111
  16. 去掉网页从网页中拷贝到word中段落带有的背景颜色
  17. 去掉你代码里的 document.write(script...
  18. 骆小刚:Linux后台服务启动方式systemd、daemon、nohup大比拼
  19. Maven整合阿里云云效制品仓库 Packages(私服)
  20. qcustomplot 峰值_QT 本程序可读取Yokogawa 光谱仪多个数据文件(CSV格式)并寻峰 - 下载 - 搜珍网...

热门文章

  1. [转]SUID和SGID
  2. vue中Axios网络请求之Vue知识点归纳(十)
  3. android 自定义水波纹点击效果Button
  4. H3C DHCP特点
  5. mysql 数据操作 单表查询 group by 注意
  6. Xcode升级插件失效修复快捷方式
  7. duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
  8. 让你瞬间提高工作效率的常用js函数汇总
  9. 「ECharts」交互 API (echarts、echartsInstance)
  10. 关于Intel IPP的基本使用方法——参照可设置ipl库