New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

manifest-rev

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

manifest-rev

Dynamically load assets into your views, emails, etc. from your `rev-manifest.json` manifest revision file

1.0.3
latest
Source
npm
Version published
Weekly downloads
107
-1.83%
Maintainers
1
Weekly downloads
 
Created
Source

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

// ...
  • 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

NameWebsite
Nick Baughhttp://niftylettuce.com/

License

MIT © Nick Baugh

Keywords

asset

FAQs

Package last updated on 23 May 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts