razzle-plugin-workbox

1.1.0 • Public • Published

razzle-plugin-workbox

A Razzle plugin for seting up workbox and register the service worker as create react app example does.

Usage

Install the plugin:

# using npm
npm install --dev razzle-plugin-workbox

# yarn
npm add --dev razzle-plugin-workbox

Add configuration to razzle.config.js:

// razzle.config.js file

module.exports = {
  plugins: [
    'workbox'
  ],
};

Register service worker:

// src/client.js

import React from 'react';
import { hydrate } from 'react-dom';
import { register } from 'razzle-plugin-workbox/service-worker';
import App from './App';

hydrate(<App />, document.getElementById('root'));

if (module.hot) {
  module.hot.accept();
}

register();

Configuration

The plugin can be set up with any workbox parameters. It comes with create react app defaults, but feel free to change them:

// razzle.config.js file

module.exports = {
  plugins: [
    {
      name: 'workbox',
      options: {
        swDest: 'my-service-worker-name.js',
        runtimeCaching: [
          {
            urlPattern: /^https:\/\/maps\.googleapis\.com\/maps-api-v3\/api\/js/,
            handler: 'StaleWhileRevalidate',
            options: {
              cacheName: 'google-maps-v3-js',
            },
          },
        ],
      },
    },
  ],
};

In addition, the register function allows certain configuration:

  • swDest: The asset name of the service worker file.
  • publicUrl: If you change where the assets are served.
  • onSuccess: Callback to be executed when the service worker has initialized sucessfully.
  • onUpdate: Callback to be executed when the service worker has been updated.

(Default values can be found here)

// src/client.js

import React from 'react';
import { hydrate } from 'react-dom';
import { register } from 'razzle-plugin-workbox/service-worker';
import App from './App';

hydrate(<App />, document.getElementById('root'));

if (module.hot) {
  module.hot.accept();
}

register({
  swDest: 'my-service-worker-name.js',
});

Readme

Keywords

none

Package Sidebar

Install

npm i razzle-plugin-workbox

Weekly Downloads

16

Version

1.1.0

License

MIT

Unpacked Size

10.8 kB

Total Files

6

Last publish

Collaborators

  • nickcis