# gulp-hash

> Cachebust your assets by adding a hash to the filename

Latest version **4.2.2** (published 2018-01-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install gulp-hash
pnpm add gulp-hash
yarn add gulp-hash
bun add gulp-hash
```

## Health

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

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.2.2 |
| Published | 2018-01-14 |
| First published | 2014-06-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/gulp-hash) |
| Module format | CommonJS |
| Dependencies | 5 |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 71 |
| Author | Miikka Virtanen |
| Maintainers | mivir |
| Keywords | cache, cachebust, cache bust, gulpplugin |

## Links

- npm: https://www.npmjs.com/package/gulp-hash
- Repository: https://github.com/Dragory/gulp-hash
- Issues: https://github.com/Dragory/gulp-hash/issues
- npm.io page: https://npm.io/package/gulp-hash

## Dependencies (5)

- [vinyl](https://npm.io/package/vinyl.md) ^2.1.0
- [through2](https://npm.io/package/through2.md) ^2.0.0
- [es6-promise](https://npm.io/package/es6-promise.md) ^2.1.1
- [lodash.assign](https://npm.io/package/lodash.assign.md) ^2.4.1
- [lodash.template](https://npm.io/package/lodash.template.md) ^2.4.1

## 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

- 4.2.2 (latest) — 2018-01-14
- 4.2.1 — 2018-01-14
- 4.2.0 — 2018-01-14
- 4.1.1 — 2017-04-05
- 4.1.0 — 2017-03-17
- 4.0.1 — 2016-12-19
- 3.1.0 — 2016-04-23
- 3.0.6 — 2015-12-29
- 3.0.5 — 2015-12-23
- 3.0.4 — 2015-12-23
- 3.0.3 — 2015-12-23
- 3.0.2 — 2015-11-25
- 3.0.1 — 2015-09-22
- 3.0.0 — 2015-09-22
- 2.2.2 — 2015-09-08
- … 9 more at https://npm.io/package/gulp-hash/versions

## README

# gulp-hash [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url]
Cachebust your assets by adding a hash to the filename

`npm install --save-dev gulp-hash`

## Basic usage

```javascript
var hash = require('gulp-hash');

gulp.src('./js/**/*.js')
	.pipe(hash()) // Add hashes to the files' names
	.pipe(gulp.dest('public/js')) // Write the renamed files
	.pipe(hash.manifest('public/assets.json', { // Generate the manifest file
	  deleteOld: true,
	  sourceDir: __dirname + '/public/js'
	}))
	.pipe(gulp.dest('.')); // Write the manifest file (see note below)
```

The "manifest" is a JSON file that maps the original filenames to the renamed ones.

**Note:** It is recommended to use the full relative path to the manifest file in `hash.manifest()` as opposed to setting it in `gulp.dest()`. This is so the `append` option is able find the original manifest file. The example above demonstrates this.

## Streaming
The plugin fully supports both buffers and streams. If you encounter any problems, please open an issue on GitHub and I'll look into it!

## API
### hash(options)

| Option | Default | Description |
| ------ | ------- | ----------- |
| algorithm | 'sha1' | [A hashing algorithm for crypto.createHash](https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm) |
| hashLength | 8 | The length of the hash to add to the file's name (slice from the start of the full hash) |
| template | `'<%= name %>-<%= hash %><%= ext %>'` | The template used when adding the hash |
| version | '' | A key to change the files' hashes without actually changing their content; appended to the contents when hashing |

### hash.manifest(manifestPath, options)

| Parameter | Default | Description |
| --------- | ------- | ----------- |
| manifestPath | (none) | The desired path to the manifest file |
| options.append | true | Whether to merge the new manifest with an existing one's contents (same filename, doesn't have to exist before first run) |
| options.space | null | [The space parameter for JSON.stringify()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)|
| options.deleteOld | false | If set to `true`, deletes old versions of hashed files |
| options.sourceDir | __dirname | Used with `deleteOld`. Specifies where to search for old files to delete. |

### hash.manifest(manifestPath, append, space)

| Parameter | Default | Description |
| --------- | ------- | ----------- |
| manifestPath | (none) | The desired path to the manifest file |
| append | true | (optional) Whether to merge the new manifest with an existing one's contents (same filename, doesn't have to exist before first run) |
| space | undefined | (optional) [The space parameter for JSON.stringify()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)|

[npm-url]: https://www.npmjs.org/package/gulp-hash
[npm-image]: https://badge.fury.io/js/gulp-hash.svg

[travis-url]: https://travis-ci.org/Dragory/gulp-hash
[travis-image]: https://api.travis-ci.org/Dragory/gulp-hash.svg

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