Skip to content

Latest commit

 

History

History
144 lines (95 loc) · 4.51 KB

README.md

File metadata and controls

144 lines (95 loc) · 4.51 KB

manifest-rev

build status code coverage code style styled with prettier made with lass license

Dynamically load assets into your views, emails, etc. from your rev-manifest.json manifest revision file (e.g. <script src="{{ manifest('foo.js'); }}"></script> would return <script src="/foo-0775041dd4.js"></script> when rendered).

Table of Contents

Install

npm:

npm install manifest-rev

yarn:

yarn add manifest-rev

Usage

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();
});

// ...
  1. Call the manifest(str, ?prop) helper function in your views when you need to include assets (requires a templating engine).

    pug:

    html
      head
        title Foo
      body
        h1 Foo
        script(src=manifest('foo.js', 'path'))

    ejs

    <html>
      <head>
        <title>Foo</title>
      </head>
      <body>
        <h1>Foo</h1>
        <script src="<%= manifest('foo.js', 'path'); %>" integrity="<%= manifest('foo.js', 'integrity') %>"></script>
      </body>
    </html>

    nunjucks (via koa-nunjucks-promise):

    <html>
      <head>
        <title>Foo</title>
      </head>
      <body>
        <h1>Foo</h1>
        <script src="{{ manifest('foo.js'); }}" integrity="{{ manifest('foo.js', 'integrity'); }}"></script>
      </body>
    </html>

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 <script src="/dist/foo-0775041dd4.js"></script> (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 http://niftylettuce.com/

License

MIT © Nick Baugh