bomb

A frontend cache-busting static middleware for express.

Usage no npm install needed!

<script type="module">
  import bomb from 'https://cdn.skypack.dev/bomb';
</script>

README

bomb

A frontend cache-busting static middleware for express.

  • Acts as a static middleware
  • Serves on a hashed filename route too

Install

npm install --save bomb

Example

Let's say we want to serve all the css, js and HTML files in our public directory:

├── index.js
    └── public
        ├── example.css
        ├── example.js
        ├── other.txt
        ├── example.png
        └── other
            └── index.html

We can create a new bomb box and use it as a middleware:

var Express = require('express');
var Bomb = require('bomb');
var Path = require('path');

var app = Express();

var box = new Bomb.Box({
    url: '/public',                           // use this as the URL root
    path: Path.join(__dirname, 'public'),     // look in this directory for files
    regex: /\.(css|js|html)/                  // only serve files that match regex
    sendOptions: {}                           // options for the `send` module
});

app.use(box);

app.listen(4000);

We can now request the files on the natural or hashed URLS:

  • /public/example.css
  • /public/example-4591dd5c9fd5aab8f5d7df6ac939441c.css
  • /public/example.js
  • /public/example-00e062122c3306198fdbe5d3ddd01fe0.js
  • /public/other/index.html
  • /public/other/index-33c805c6162941684b6fc618d0e42ab8.html

To get the hashed URL from a natural one, just call box.getHashedUrl(url):

box.getHashedUrl('/public/example.css') === '/public/example-4591dd5c9fd5aab8f5d7df6ac939441c.css'

To get the natural URL from a hashed one, just call box.getNaturalUrl(url):

box.getNaturalUrl('/public/example-4591dd5c9fd5aab8f5d7df6ac939441c.css') === '/public/example.css'