If loaders are the workhorse for file transformations (preprocessing), then plugins are the workhorse for the overall Rspack build process. Most of Rspack's native implementations rely on the Rust side of the plugin system. For Node users, you don't need to worry about interoperation issues with Rust, because Rspack takes care of those details for you automatically. You can just focus on how to use the plugins.
The structure of a plugin is very simple: just implement an apply
method that accepts a Compiler
instance. It will be called when the Rspack plugin is initialized. The detailed API can be found in the Plugin API.
We use CommonJS style module exports so that plugins can be imported directly using require
in rspack.config.js
.
Here's an example of how to use the already compatible webpack-bundle-analyzer in rspack.config.js
:
Please refer to Plugin compat for the list of plugins that have passed Rspack compatibility tests.
If you use TypeScript to write Rspack plugins, you can import Compiler
and RspackPluginInstance
to declare the types of your plugins: