# gulp-rev-happy

> improve gulp-rev2

Latest version **1.0.4** (published 2020-05-13) · MIT license · 0 weekly downloads

## Install

```sh
npm install gulp-rev-happy
pnpm add gulp-rev-happy
yarn add gulp-rev-happy
bun add gulp-rev-happy
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2020-05-13 |
| First published | 2020-05-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4 |
| Dependencies | 10 |
| Unpacked size | 13.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | lbnnbs |
| Maintainers | lbnnbs |
| Keywords | gulpplugin, rev, revving, revision, hash, optimize, version, versioning, cache, expire, static, asset, assets |

## Links

- npm: https://www.npmjs.com/package/gulp-rev-happy
- Repository: https://github.com/lbnnbs/gulp-rev-happy
- Homepage: https://github.com/lbnnbs/gulp-rev-happy#readme
- Issues: https://github.com/lbnnbs/gulp-rev-happy/issues
- npm.io page: https://npm.io/package/gulp-rev-happy

## Dependencies (10)

- [vinyl](https://npm.io/package/vinyl.md) ^2.1.0
- [rev-hash](https://npm.io/package/rev-hash.md) ^2.0.0
- [rev-path](https://npm.io/package/rev-path.md) ^2.0.0
- [through2](https://npm.io/package/through2.md) ^2.0.0
- [gulp-util](https://npm.io/package/gulp-util.md) ^3.0.0
- [sort-keys](https://npm.io/package/sort-keys.md) ^2.0.0
- [underscore](https://npm.io/package/underscore.md) ^1.8.3
- [vinyl-file](https://npm.io/package/vinyl-file.md) ^3.0.0
- [plugin-error](https://npm.io/package/plugin-error.md) ^1.0.1
- [modify-filename](https://npm.io/package/modify-filename.md) ^1.1.0

## Alternatives

- [memory-cache](https://npm.io/package/memory-cache.md) — 795.0K weekly downloads
- [@httptoolkit/proxy-agent](https://npm.io/package/@httptoolkit/proxy-agent.md) — 11.2K weekly downloads
- [express-cache-controller](https://npm.io/package/express-cache-controller.md) — 5.3K weekly downloads
- [http-cache-middleware](https://npm.io/package/http-cache-middleware.md) — 4.5K weekly downloads
- [cache2](https://npm.io/package/cache2.md) — 1.5K weekly downloads

## Recent versions

- 1.0.4 (latest) — 2020-05-13
- 1.0.3 — 2020-05-13
- 1.0.2 — 2020-05-12
- 1.0.1 — 2020-05-12
- 1.0.0 — 2020-05-12

## README

# gulp-rev-happy  
  
> 给资源文件添加文件指纹，改进自 [gulp-rev2](https://github.com/makemoretime/gulp-rev2)  
>  
> `a.png` → `a-f7ee61d96b.png`（文件名方式）  
>  
> `a.png` → `a.png?_v_=f7ee61d96b`（url参数方式）  
  
### 处理了rev2的一些问题：  
> 1、不能为html和js文件添加指纹  
> 2、多次调用update，导致的指纹累积 ?_v_=560396f564?_v_=560396f564  
> 3、如果原本的链接带了url参数，导致出现两个问号 ?_v_=560396f564?aaa=bbb  
> 4、同一个gulp的task中，生成manifest后马上调用update，因为require缓存不能读取刚生成的manifest  


## Install  
```bash  
$ npm install --save-dev gulp-rev-happy  
```  

## Usage1 使用url参数方式构建文件指纹  
  
[demo1](demo1.js)  
  
  
## Usage2 使用文件改名方式构建文件指纹  
  
[demo2](demo2.js)  
  
  
  
## 设计思路  
修改自 **gulp-rev** , **gulp-rev-collector** 和 **gulp-rev2** ，主要实现如下：  
  
1. 根据文件的内容 `file.contents` 生成文件指纹（`hash`值）；  
  
2. 根据前面生成的文件指纹集合成一张`（源文件，构建文件）`映射对照表（并保存在清单文件 rev-manifest.json 中）；  
  
3. 根据前面生成的映射对照表级联更新存在引用的父文件；  
  
## 配置项  
  
### rev([opts])  
  
#### query  
  
Type: `boolean`<br>  
Default: `false`  
  
设置文件指纹的关联方式，`true` 通过url参数关联 `a.png` → `a.png?_v_=f7ee61d96b`，`false` 通过文件名关联 `a.png` → `a-f7ee61d96b.png`。  
  
### 其他配置项同 [gulp-rev-collector](https://www.npmjs.com/package/gulp-rev-collector)  

collectedManifest 指定需要合并的manifest文件  

replaceReved 允许替换已经替换过的文件  

dirReplacements 目录替换  

revSuffix 文件指纹生成方式  

extMap 扩展名替换

---
_Source: https://npm.io/package/gulp-rev-happy · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
