0.1.8 • Published 3 years ago

css-module-override-webpack-plugin v0.1.8

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

css-module-override-webpack-plugin

This plugin extends mini-css-extract-plugin to work with module-override-loader and module-override-webpack-plugin.

It loads CSS module overrides according to a file pattern and creates additional stylesheet files.

Install

npm install css-module-override-webpack-plugin module-override-loader --save-dev

Usage

Example

Let's say you imported file base.css and you have base.batman.css and base.superman.css in same location.

const CssModuleOverrideWebpackPlugin = require('css-module-override-webpack-plugin');

module.exports = {
    entry: {
        main: 'src/app.js'
    },
    output: {
        path: 'dist/'
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [
                    {
                        loader: 'module-override-loader',
                        options: {
                            overrides: ['batman', 'superman'],
                            pattern: '[name].[override].[ext]'
                        }
                  },
                  "css-loader"
                ]
            }
        ]
    },
    plugins: [
        new CssModuleOverrideWebpackPlugin({
            filename: "[name].css",
            overrides: ['batman', 'superman'],
            standalone: true,
            standaloneOverridesOutputPath: 'overrides/[name].[override].css'
        })
    ]
}

Then you will end up with three stylesheet files dist/main.css, dist/main.batman.css and main.superman.css.

Usage with module-override-webpack-plugin

If you are using module-override-webpack-plugin for JS overrides you have to turn standalone mode off. Then CSS overrides will be saved relative to JS override output.

const ModuleOverrideWebpackPlugin = require('module-override-webpack-plugin');
const CssModuleOverrideWebpackPlugin = require('css-module-override-webpack-plugin');

module.exports = {
    entry: {
        main: 'src/app.js'
    },
    output: {
        path: 'dist/',
        filename: '[name]/script.js',
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                use: [
                    {
                        loader: 'module-override-loader',
                        options: {
                            overrides: ['batman', 'superman'],
                            pattern: '[name].[override].[ext]'
                        }
                    },
                    'babel-loader'
                ]
            },
            {
                test: /\.css$/,
                use: [
                    {
                        loader: 'module-override-loader',
                        options: {
                            overrides: ['batman', 'superman'],
                            pattern: '[name].[override].[ext]'
                        }
                    },
                    "css-loader"
                ]
            }
        ]
    },
    plugins: [
        new ModuleOverrideWebpackPlugin({
            overrides: ['batman', 'superman'],
            outputPath: '[name]/overrides/[override]'
        }),
        new CssModuleOverrideWebpackPlugin({
            filename: "[name].css",
            overrides: ['batman', 'superman'],
            standalone: false
        })
    ]
}

Then you end up with this result:

dist/
-- main/
  -- script.js
  -- main.css
  -- overrides/
    -- batman/
      -- script.js
      -- main.css
    -- superman/
      -- script.js
      -- main.css

Options

OptionDefaultDescription
overridesundefinedArray of strings. Overrides to process
keepOriginalsfalseIf set to false, resulting bundle will contain only overridden modules
standalonefalseSet to true to use without module-override-webpack-plugin
standaloneOverridesOutputPathundefinedPath for the bundles with overrides

Debug

You can use debug library with namespace css-module-override-webpack-plugin. debug is optional dependency. You have to install it yourself if you want to use it.

0.1.8

3 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.5

4 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago