Skip to content

Webpack 5 plugin for tree shaking unused Quasar components from generated bundles

License

Notifications You must be signed in to change notification settings

Trinovantes/quasar-unused-plugin

Repository files navigation

Quasar Unused Plugin

This is a Webpack 5 plugin for tree shaking unused Quasar components from generated bundles. If you are using Quasar as a standalone UI library with Webpack, then you will be importing from node_modules/quasar/dist/quasar.esm.prod.js. However, Webpack cannot tree shake unused components from this file because this file contains circular references. We can instead import the source code from quasar/src/index.prod.js and use this plugin to break the dependency chain.

Example Savings (in ./examples dir)

Bundle Size Gzipped Size
Before 559.07 KB 171.02 KB
After 184.23 KB 62.75 KB

Usage

import { QuasarUnusedPlugin } from 'quasar-unused-plugin'

export default {
    plugins: [
        new QuasarUnusedPlugin(),
    ],
}

If you are externalizing node modules, you need to add quasar to the allowlist so that Webpack can process this package.

import nodeExternals from 'webpack-node-externals'

export default {
    externals: [
        nodeExternals({
            allowlist: [
                /^quasar*/,
            ],
        }),
    ],
}