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: