Home

Awesome

Hapi Cache Buster

A Hapi cache buster for assets (css, javascript, images, etc) in your view templates.

Goal:

Have the client/browser reload new assets when there is a new version.

How it works:

It grabs the package.json version number of your application from the node process current working directory and uses that as the cache version. In your view template you can now access version.cache. You can place it where you are needing to update cache.

Lets say your package.json is version 0.0.1, it will print out ?v=001. To bust the cache you just update your package.json version to a new number.

Handlebars: <link rel="stylesheet" href="css/styles.css{{version.cache}}">

Jade: link(rel='stylesheet', href='css/styles.css#{version.cache}')

Options

Instead of using the package.json version for the cache version, you can specify a number and pass it into the plugin options.

{
  register: require('hapi-cache-buster'),
  options: {
    version: 55
  }
}

Other

You can see this being used in the Hapi Ninja boilerplate example. https://github.com/poeticninja/hapi-ninja

Troubleshooting

If for some reason you are getting an error because its unable to find the package.json you can actually pass in the package.json version manually require('./package.json').version. This is useful if your current process working directory process.cwd() is different from the actual application.