@wq/rollup-plugin makes it possible to create custom plugins that integrate with wq.app’s pre-built wq.js bundle. @wq/rollup-plugin remaps certain module imports to leverage exports from the bundle.
Note: While @wq/rollup-plugin can used in a project build, it is primarily intended for use by authors of plugins distributed as reusable Django apps. Django projects created with
wq create --with-npm(& Create React App) use CRA’s Webpack configuration by default instead of Rollup. (See @wq/cra-template)
Usage
npm i @wq/rollup-plugin
// rollup.config.js
import wq from '@wq/rollup-plugin';
import babel from '@rollup/plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import replace from '@rollup/plugin-replace';
export default [
    {
        input: 'src/input.js',
        plugins: [
            wq(),
            babel({
                presets: ['@babel/preset-react'],
                babelHelpers: 'inline'
            }),
            resolve(),
            commonjs(),
            replace({
                'process.env.NODE_ENV': '"production"',
                delimiters: ['', '']
            })
        ],
        treeshake: {
            propertyReadSideEffects: false
        },
        output: {
            file: 'static/app/js/pluginName.js',
            sourcemap: true,
            format: 'esm'
        }
    }
];
With the above configuration, the output bundle will include the source of any third-party node_modules/, except those known to already be included in wq.js. Those imports will be changed to a relative import to ./wq.js (which is typically deployed to the static/js/app folder in a Django project).
In addition to keeping bundle sizes small, @wq/rollup-plugin helps ensure that there is only one copy of key libraries like React. Below is the full list of modules currently exported by wq.js for consumption via this plugin:
- react
- react-dom
- react-is
- prop-types
- formik
- @material-ui/utils
- @material-ui/styles
- @material-ui/core/ButtonBase
- @material-ui/core/Paper
- @material-ui/core/styles/withStyles
- @material-ui/core/styles/colorManipulator
- mapbox-gl
- react-mapbox-gl
- @wq/react
- @wq/material
- @wq/map
- @wq/map-gl
Source
The source code for @wq/rollup-plugin is in the wq.create repository.