gulp常用插件之gulp-cache使用
更多gulp常用插件使用请访问:gulp常用插件汇总
gulp-cache这是一款基于临时文件的gulp缓存代理任务。
安装
一键安装不多解释
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
[可选]存储缓存对象的存储桶的名称
默认为defaultoptions.key
[可选]用于确定此任务的输入文件唯一性的内容。- 可以返回字符串或Promise解析为字符串的。
- 该方法的结果自动转换为唯一的MD5哈希;无需自己做。
- 默认为
file.contentsBuffer或undefinedStream。
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使用的更多相关文章
- gulp常用插件之gulp-imagemin使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-imagemin这是一款缩小PNG,JPEG,GIF和SVG图像的插件. 更多使用文档请点击访问gulp-imagemin工具官网. 安 ...
- gulp常用插件之gulp-rev-format使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-format这是一款提供静态资产的哈希格式选项(前缀,后缀,最后扩展名). 更多使用文档请点击访问gulp-rev-format ...
- gulp常用插件之bower使用
更多gulp常用插件使用请访问:gulp常用插件汇总 bower这是一款客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源. 更多使用文档请点击访 ...
- 精通gulp常用插件
本文主要展示的是gulp常用插件的使用方法和用途,通过对插件的熟练运用达到精通gulp.不定期更新.可以到github上面下载DEMO. github地址:lin-xin/gulp-plugins 匹 ...
- node和gulp实现前端工程自动化(附:gulp常用插件)
/** * 1. LESS编译 压缩 合并 * 2. JS合并 压缩 混淆 * 3. img复制 * 4. html压缩 */ // 在gulpfile中先载入gulp包,因为这个包提供了一些APIv ...
- gulp常用插件之gulp-eslint使用
更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-eslint**这是一个用于识别和报告在ECMAScript/JavaScript代码中找到的模式的Gulp插件.. 更多使用文档 ...
- gulp常用插件之gulp-babel使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-babel这是Babel的Gulp插件. 此自述文件适用于gulp-babel v8 + Babel v7检查7.x分支以了解使用Bab ...
- gulp常用插件之gulp-postcss使用
更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-postcss**这是一款通过多个插件通过管道传递CSS,但是仅解析一次CSS. 更多使用文档请点击访问gulp-postcss工 ...
- gulp常用插件之cssnano使用
更多gulp常用插件使用请访问:gulp常用插件汇总 cssnano这是一款将你的 CSS 文件做 多方面的的优化,以确保最终生成的文件 对生产环境来说体积是最小的插件. 更多使用文档请点击访问cha ...
随机推荐
- 内网ICMP隧道构建之icmpsh
下载地址: https://github.com/inquisb/icmpsh#usage kali下载 git clone https://github.com/inquisb/icmpsh.git ...
- golang函数 和 条件语句
/* if : if 语句 由一个布尔表达式后紧跟一个或多个语句组成 is else : if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行 s ...
- k8s系列---pod介绍
# yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metadata: #必选,元数据 name: string # ...
- mongoose报错:DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
mongoose报错:(node:15689) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes ...
- oracle-11g-R2监听文件配置
客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-, TNS:listener ...
- springcloud vue.js 微服务 分布式 activiti工作流 前后分离 shiro权限 集成代码生成器
1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...
- linux系统中运行node进程,无法杀死进程
events.js:72 throw er; // Unhandled 'error' event ^Error: listen EADDRINUSE at errnoException (net.j ...
- 【读书笔记】https://source.android.google.cn/devices/bootloader
https://source.android.google.cn/devices/bootloader 本文主要记录aosp官网关于bootloader的相关资料 Bootloader A bootl ...
- java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
. 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限. 按钮权限: 给角色分配按钮权限.2 ...
- JS DOM用不同方法获取节点及对节点插入、复制和移除
操作节点的方法 appendChild() insertBefore() replaceChild() cloneNode() normalize() splitText() sppendChild( ...