https://github.com/ladjs/manifest-rev
Dynamically load assets into your views, emails, etc. from your `rev-manifest.json` manifest revision file.
https://github.com/ladjs/manifest-rev
asset buster cache dynamic gulp hash json load loader manifest rev rev-manifest webpack
Last synced: 6 months ago
JSON representation
Dynamically load assets into your views, emails, etc. from your `rev-manifest.json` manifest revision file.
- Host: GitHub
- URL: https://github.com/ladjs/manifest-rev
- Owner: ladjs
- License: mit
- Created: 2019-09-16T20:08:11.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-23T03:01:13.000Z (over 5 years ago)
- Last Synced: 2025-04-05T02:01:54.116Z (6 months ago)
- Topics: asset, buster, cache, dynamic, gulp, hash, json, load, loader, manifest, rev, rev-manifest, webpack
- Language: JavaScript
- Homepage: https://lad.js.org
- Size: 239 KB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# manifest-rev
[](https://travis-ci.org/ladjs/manifest-rev)
[](https://codecov.io/gh/ladjs/manifest-rev)
[](https://github.com/sindresorhus/xo)
[](https://github.com/prettier/prettier)
[](https://lass.js.org)
[](<>)> Dynamically load assets into your views, emails, etc. from your `rev-manifest.json` manifest revision file (e.g. `` would return `` when rendered).
## Table of Contents
* [Install](#install)
* [Usage](#usage)
* [API](#api)
* [Breaking changes in 2.0](#breaking-changes-in-20)
* [Contributors](#contributors)
* [License](#license)## Install
[npm][]:
```sh
npm install manifest-rev
```[yarn][]:
```sh
yarn add manifest-rev
```## Usage
```js
const path = require('path');const Koa = require('koa');
const manifestRev = require('manifest-rev');const app = new Koa();
app.use((ctx, next) => {
ctx.state.manifest = manifestRev({
manifest: path.join(__dirname, 'build', 'rev-manifest.json'),
prepend: '/'
});
return next();
});// ...
```2. Call the `manifest(str, ?prop)` helper function in your views when you need to include assets (requires a templating engine).
> [pug][]:
```pug
html
head
title Foo
body
h1 Foo
script(src=manifest('foo.js', 'path'))
```> [ejs][]
```ejs
Foo
Foo
```> [nunjucks][] (via [koa-nunjucks-promise][]):
```html
Foo
Foo
```## API
* `manifestRev(options)` - accepts a required `options` argument for setup. Returns middleware for use in `app.use` statement (which in turn binds to `ctx.state` a helper function called `manifest`). Here are the properties accepts in the `options` argument.
* `manifest` (**required**) - path to a valid `rev-manifest.json` file (e.g. as built by [gulp-rev][] or [gulp-rev-all][])
* `prepend` (optional) - string to prepend before file paths rendered after lookup (e.g. if you type `{{ manifest('foo.js'); }}` in your view, and you have passed `prepend: '/dist/'` in your setup, then your tag would render as `` (defaults to `/`)* `manifest(str)` - the helper function returned when `manifestRev` is invoked in your app. Returns the string found from a lookup in your `rev-manifest.json` file for the `str` argument passed (e.g. if you type `{{ manifest('foo.js'); }}` in your view, then it returns for the value of the `foo.js` property as defined in your `manifest` file, such as `foo-0775041dd4.js`). If the found is not found, then the input `str` argument is returned.
## Breaking changes in 2.0
* `manifest(str)` is now `manifest(str, prop)` which now accepts a following property within your `rev-manifest.json` file. `prop` is optional and defaults to the path of the rev'd file. For example if you type `{{ manifest('foo.js', 'integrity'); }}` in your view, then it returns for the value of the `foo.js` file `integrity` property as defined in your `manifest` file, such as `sha256-YEWYfCFP9yc5DAF8K5AtLEyFuKZ1MNw+xQPm8g70LYY=`). If the found is not found, then the input `str` argument is returned.
## Contributors
| Name | Website |
| -------------- | -------------------------- |
| **Nick Baugh** | |## License
[MIT](LICENSE) © [Nick Baugh](http://niftylettuce.com/)
##
[npm]: https://www.npmjs.com/
[yarn]: https://yarnpkg.com/
[koa-nunjucks-promise]: https://github.com/hanai/koa-nunjucks-promise
[gulp-rev-all]: https://github.com/smysnk/gulp-rev-all
[gulp-rev]: https://github.com/sindresorhus/gulp-rev
[nunjucks]: https://mozilla.github.io/nunjucks/
[pug]: https://github.com/pugjs/pug
[ejs]: http://ejs.co/