更多gulp常用插件使用请访问:gulp常用插件汇总


gulp-cache这是一款基于临时文件的gulp缓存代理任务。

更多使用文档请点击访问gulp-cache工具官网

安装

一键安装不多解释

npm install --save-dev gulp-cache

使用

简单使用:

import gulp from 'gulp';
import favicons from 'gulp-favicons';
import srcset from 'gulp-srcset';
import cache from 'gulp-cache'; gulp.task('favicon', () =>
gulp.src('src/favicon.svg')
.pipe(cache(
// 目标插件,其输出将被缓存
favicons(faviconsConfig),
//`gulp-cache` 插件的选项.
{
//用桶存储缓存中的收藏夹图标。
name: 'favicons'
}
))
.pipe(gulp.dest('./favicons'))
); gulp.task('images', () =>
gulp.src('src/**/*.{jpg,png,svg}')
.pipe(cache(
// 目标插件,其输出将被缓存
srcset(srcsetRules),
//`gulp-cache` 插件的选项.
{
// 存储桶以将图像存储在缓存中。
name: 'images'
}
))
.pipe(gulp.dest('./images'))
);

复杂用法示例:

import fs from 'fs';
import gulp from 'gulp';
import jshint from 'gulp-jshint';
import cache from 'gulp-cache'; const jsHintVersion = '2.4.1';
const jshintOptions = fs.readFileSync('.jshintrc'); function makeHashKey(file) {
//取消文件内容,jshint版本和选项
return `${file.contents.toString('utf8')}${jshintVersion}${jshintOptions}`;
} gulp.task('lint', () =>
gulp.src('src/**/*.js')
.pipe(cache(
//目标插件,其输出将被缓存
jshint('.jshintrc'),
// `gulp-cache` 插件的选项.
{
key: makeHashKey,
// 结果表明成功
success(jshintedFile) {
return jshintedFile.jshint.success;
},
// 作为成功操作
value(jshintedFile) {
// 将在下次运行任务时返回缓存命中的文件对象
return {
jshint: jshintedFile.jshint
};
}
}
))
.pipe(jshint.reporter('default'))
});

API

cache(pluginToCache [, options])

  • pluginToCache

    目标插件,其输出将被缓存。
  • options

    gulp-cache插件选项。

    * options.fileCache

    [可选]在哪里存储缓存对象

    默认为 new Cache({ cacheDirName: 'gulp-cache' })

    用创建自己的 new cache.Cache({ cacheDirName: 'custom-cache' })

    • options.name

      [可选]存储缓存对象的存储桶的名称

      默认为 default
    • options.key

      [可选]用于确定此任务的输入文件唯一性的内容。

      • 可以返回字符串或Promise解析为字符串的。
      • 该方法的结果自动转换为唯一的MD5哈希;无需自己做。
      • 默认为file.contents Buffer或undefined Stream。
    • options.success

      [可选]如何确定结果文件是否成功。

      • 必须返回一个真实值,该值用于确定是否缓存任务结果。Promise支持。
      • 默认为true,因此将缓存所有任务结果。
    • options.value

      [可选]作为任务的缓存结果存储的内容。

      • 可以是返回对象的函数,也可以是Promise解析为对象的函数。
      • 也可以设置为将从任务结果文件中选取的字符串。
      • 此方法的结果将一直运行JSON.stringify并存储在临时文件中,以供以后检索。
      • 默认值contents将获取结果file.contents并将其存储为字符串。

清除缓存

如果您发现需要清除缓存,有一个方便的cache.clearAll()方法:

import cache from 'gulp-cache';

gulp.task('clear', () =>
cache.clearAll()
);

一对多缓存

要在您的Gulp插件中支持一对多缓存,您应该:

使用clone方法,保存_cachedKey属性:

const outputFile1 = inputFile.clone({ contents: false });
const outputFile2 = inputFile.clone({ contents: false }); outputFile1.contents = new Buffer(...);
outputFile2.contents = new Buffer(...); const outputFiles = [
outputFile1,
outputFile2,
...
];

或者,手动执行:

const outputFiles = [
new Vinyl({..., _cachedKey: inputFile._cachedKey}),
new Vinyl({..., _cachedKey: inputFile._cachedKey}),
...
];

gulp常用插件之gulp-cache使用的更多相关文章

  1. gulp常用插件之gulp-imagemin使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-imagemin这是一款缩小PNG,JPEG,GIF和SVG图像的插件. 更多使用文档请点击访问gulp-imagemin工具官网. 安 ...

  2. gulp常用插件之gulp-rev-format使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-format这是一款提供静态资产的哈希格式选项(前缀,后缀,最后扩展名). 更多使用文档请点击访问gulp-rev-format ...

  3. gulp常用插件之bower使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 bower这是一款客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源. 更多使用文档请点击访 ...

  4. 精通gulp常用插件

    本文主要展示的是gulp常用插件的使用方法和用途,通过对插件的熟练运用达到精通gulp.不定期更新.可以到github上面下载DEMO. github地址:lin-xin/gulp-plugins 匹 ...

  5. node和gulp实现前端工程自动化(附:gulp常用插件)

    /** * 1. LESS编译 压缩 合并 * 2. JS合并 压缩 混淆 * 3. img复制 * 4. html压缩 */ // 在gulpfile中先载入gulp包,因为这个包提供了一些APIv ...

  6. gulp常用插件之gulp-eslint使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-eslint**这是一个用于识别和报告在ECMAScript/JavaScript代码中找到的模式的Gulp插件.. 更多使用文档 ...

  7. gulp常用插件之gulp-babel使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-babel这是Babel的Gulp插件. 此自述文件适用于gulp-babel v8 + Babel v7检查7.x分支以了解使用Bab ...

  8. gulp常用插件之gulp-postcss使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-postcss**这是一款通过多个插件通过管道传递CSS,但是仅解析一次CSS. 更多使用文档请点击访问gulp-postcss工 ...

  9. gulp常用插件之cssnano使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 cssnano这是一款将你的 CSS 文件做 多方面的的优化,以确保最终生成的文件 对生产环境来说体积是最小的插件. 更多使用文档请点击访问cha ...

随机推荐

  1. 全网最详细的Linux命令系列-Screen远程会话命令

    screen 管理你的远程会话 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份.ftp 传输等等.通常情况下我们都 ...

  2. JavaScript实现计算后缀表达式(逆波兰表达式)以及将中缀表达式转为后缀表达式

    逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出.逆波兰表达式又叫做后缀表达式.这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子: 正常的表达式 逆波兰表达式 a+b ...

  3. zabbix 自定义监控项每隔1分钟检测一次三次失败报警

    在agent上添加 UserParameter=auth.check,/etc/zabbix/auth_monitor/auth_check.py auth.check就是之后添加的自定义的item值 ...

  4. SAXParseException Content is not allowed in Prolog (前言中不允许有内容)

    解析 XML 文件的时候,如 Mybatis 的 Mapper 文件,有时会出现 org.xml.sax.SAXParseException 前言中不允许有内容 的异常,英文就是 Content is ...

  5. light oj 1014 - Ifter Party分解因子

    1014 - Ifter Party   I have an Ifter party at the 5th day of Ramadan for the contestants. For this r ...

  6. #614 C. NEKO's Maze Game[简易DFS,0|1转换]

    起初一直看不懂题的意思,最后看了大佬的视频讲解才明白了题的意思. 题意:每次询问重复的时候抵消上一次操作  如果是奇数次的操作则视为障碍阻挡前进 收获:0和1的转换技巧,简单搜索和巧定义全局变量,没必 ...

  7. JS实现斐波那契数列的几种方法

    斐波那契数列指的是这样一个数列:1.1.2.3.5.8.13.21.34.…… 前两项为1,从第三项起,每一项等于前两项的和,即F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n& ...

  8. 解决H5页面点击一瞬间出现灰色背景的问题

    H5页面有时会出现点击一瞬间出现灰色背景的问题(ios会,安卓不会),解决方法: 加上样式: -webkit-tap-highlight-color: transparent; 如果以上方法不行,则是 ...

  9. C#后台异步消息队列实现

    简介 基于生产者消费者模式,我们可以开发出线程安全的异步消息队列. 知识储备 什么是生产者消费者模式? 为了方便理解,我们暂时将它理解为垃圾的产生到结束的过程. 简单来说,多住户产生垃圾(生产者)将垃 ...

  10. scrapy框架中多个spider,tiems,pipelines的使用及运行方法

    用scrapy只创建一个项目,创建多个spider,每个spider指定items,pipelines.启动爬虫时只写一个启动脚本就可以全部同时启动. 本文代码已上传至github,链接在文未. 一, ...