Skip to content

dokmic/webpack-redis-plugin

Repository files navigation

Webpack Redis Plugin

NPM Tests Code Coverage

This Webpack plugin provides an ability to save your assets in Redis. The plugin supports all the Webpack versions and is tested with Webpack 2, 3, 4, and 5.

Install

npm install --save-dev webpack-redis-plugin

Usage

In your webpack.config.js:

const { WebpackRedisPlugin } = require('webpack-redis-plugin');
const sha1 = require('sha1');

module.exports = {
  entry: {
    page1: [
      './src/page1/index.js',
    ],
    page2: [
      './src/page2/index.js',
    ],
  },

  output: {
    filename: 'js/[name].js',
  },

  // ...

  plugins: [
    new WebpackRedisPlugin({
      config: {
        host: 'redis.example.com',
        password: 'password',
      },

      filter: (key, asset) => key === 'js/page1.js' && asset.size(),

      transform: (key, asset) => ({
        key: `${key}.sha1`,
        value: sha1(asset.source().toString()),
      }),
    }),
  ],
};

This config tells the plugin to filter out everything except non-empty js/page1.js and save a hash sum of the contents at the js/page1.js.sha1 key.

API

options.config

Redis client configuration. All possible options can be found here.

Default: undefined

options.filter

The callback function to filter keys/assets that will be set in Redis:

filter(key: string, asset: Source): boolean | Promise<boolean>;
  • key - relative asset path.
  • asset - Webpack asset.

Default: () => true

options.transform

The callback function transforms keys and values that will be set in Redis:

transform(key: string, asset: Source): KeyValuePair | Promise<KeyValuePair>
  • key - relative asset path.
  • asset - Webpack asset.

Default: (key, asset) => ({ key, value: asset.source() })