更多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. False注入,以及SQL注入技巧总结

    title: False注入,以及SQL注入技巧总结 date: 2017-04-25 00:23:31 tags: ['SQL注入'] --- 利用False我们可以绕过一些特定的WAF以及一些未来 ...

  2. space transport protocols

    VSAT系统对TCP的改进 https://www.vsat-systems.com/broadband-satellite-internet/index.html TCP/IP over satel ...

  3. NodeJS 介绍安装

    1.NodeJS简介 Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的.可扩展的网络应用.N ...

  4. HBASE手动触发major_compact

    1.定时执行脚本#!/bin/bash source /etc/profile sh ./hbase shell <<EOF major_compact 'table_name' EOF ...

  5. Jenkins新建节点找不到通过Java web启动代理?

    参考博客:Jenkins新建节点,启动方式没有“通过Java Web启动代理”选项怎么办? 在Jenkins中,打开“系统管理”→“管理节点”→“新建节点”页面时,“启动方式”选项没有“通过Java ...

  6. mac下搭建http服务器(apache+php),使用homebrew升级php

    新版mac依旧预装了 Apache ,但是已经不能在 「系统偏好设置」中的「Web 共享」来开启了,需要手动通过命令行开启. 启动Apache 启动:sudo apachectl start 停止:s ...

  7. 基于 React 实现一个 Transition 过渡动画组件

    过渡动画使 UI 更富有表现力并且易于使用.如何使用 React 快速的实现一个 Transition 过渡动画组件? 基本实现 实现一个基础的 CSS 过渡动画组件,通过切换 CSS 样式实现简单的 ...

  8. Netty——知识点总结

    引言 Netty blablabla…… Netty 知识点

  9. Nginx Rewrite相关功能

    目录 Nginx Rewrite相关功能 ngx_http_rewrite_module模块指令: if指令: set指令: break指令: return指令: rewrite_log指令: rew ...

  10. Redis常用命令之操作String类型

    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...