Giter Club home page Giter Club logo

koa-manifest-rev's Introduction

koa-manifest-rev

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

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

Works with any templating engine, such as pug, ejs, or nunjucks. Inspired by express-rev and built for koa.

Table of Contents

Install

npm:

npm install koa-manifest-rev

yarn:

yarn add koa-manifest-rev

Usage

  1. Require the package and include the middleware

    import Koa from 'koa';
    import koaManifestRev from 'koa-manifest-rev';
    import path from 'path';
    
    const app = new Koa();
    
    app.use(koaManifestRev({
      manifest: path.join(__dirname, 'build', 'rev-manifest.json'),
      prepend: '/'
    }));
  2. Call the manifest(str) 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'))

    ejs

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

    nunjucks (via koa-nunjucks-promise):

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

API

  • koaManifestRev(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 bound to ctx.state when koaManifestRev middleware is included 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.

Contributors

Name Website
Nick Baugh http://niftylettuce.com/

License

MIT © Nick Baugh

koa-manifest-rev's People

Contributors

niftylettuce avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.