CC 4.0 License

The content of this section is derived from the content of the following links and is subject to the CC BY 4.0 license.

The following contents can be assumed to be the result of modifications and deletions based on the original contents if not specifically stated.

Internal plugins

This is a list of plugins used internally by Rspack, aligned with the plugins used internally by webpack.

WARNING

You should only concern yourself with these plugins if you are building your own compiler based on Rspack, or for internal inspection.

Categories of internal plugins:

environment

Plugins affecting the environment of the compiler.

ElectronTargetPlugin

electron.ElectronTargetPlugin(context)

Customizes the handling of external dependencies for different contexts (such as main process, preload scripts, and renderer process) in Electron applications.

externalsPresets.electron, externalsPresets.electronMain, externalsPresets.electronRenderer, and externalsPresets.electronPreload all rely on this plugin.

NodeEnvironmentPlugin

node.NodeEnvironmentPlugin()

Applies Node.js style filesystem to the compiler.

compiler

Plugins affecting the compiler.

ProgressPlugin

ProgressPlugin(handler)

Hook into the compiler to extract progress information. The handler must have the signature function(percentage, message). Percentage is called with a value between 0 and 1, where 0 indicates the start and 1 the end.

entry

Plugins, which add entry chunks to the compilation.

EntryPlugin

EntryPlugin(context, entry, options)

Adds an entry chunk on compilation. The chunk is named options.name and contains only one module (plus dependencies). The module is resolved from entry in context (absolute path).

  • context: The base path for module resolution, under which the entry module resolution will be conducted.
  • entry: Specifies the module path to be used as an entry point.
  • options: Additional configurations for the entry module.

DynamicEntryPlugin

DynamicEntryPlugin(context, entry)

Similar to EntryPlugin but accepts a function as the entry argument. This function is called during each make event in the build process to support dynamically determining the entry points.

EntryOptionPlugin

EntryOptionPlugin()

output

EvalDevToolModulePlugin

EvalDevToolModulePlugin(options)

Decorates the module template by wrapping each module in a eval annotated with // @sourceURL.

WebWorkerTemplatePlugin

webworker.WebWorkerTemplatePlugin(options)

Chunks are loaded by importScripts.

options are the output options.

FetchCompileAsyncWasmPlugin

This plugin is used to provide runtime code for WASM bundling and is often used together with a child compiler.

web.FetchCompileAsyncWasmPlugin()

source

Plugins affecting the source code of modules.

ProvidePlugin

ProvidePlugin(name, request)

If name is used in a module it is filled by a module loaded by require(<request>).

NodeTargetPlugin

node.NodeTargetPlugin()

The plugins should be used if you run the bundle in a Node.js environment.

If ensures that native modules are loaded correctly even if bundled.

optimize

Note that all plugins under rspack.optimize namespace should only be used when mode set to 'none'. Otherwise you might get into trouble where plugins are applied twice.

LimitChunkCountPlugin

optimize.LimitChunkCountPlugin(options)

Merge chunks limit chunk count is lower than options.maxChunks.

The overhead for each chunks is provided by options.chunkOverhead or defaults to 10000. Entry chunks sizes are multiplied by options.entryChunkMultiplicator (or 10).

Chunks that reduce the total size the most are merged first. If multiple combinations are equal the minimal merged size wins.

loader

LoaderOptionsPlugin

LoaderOptionsPlugin(options)

LoaderTargetPlugin

LoaderTargetPlugin(target)

module federation

Internal plugins used with Module Federation, which are the basis of the ModuleFederationPlugin.

ContainerPlugin

container.ContainerPlugin(options)

ContainerReferencePlugin

container.ContainerReferencePlugin(options)

ConsumeSharedPlugin

sharing.ConsumeSharedPlugin(options)

ProvideSharedPlugin

sharing.ProvideSharedPlugin(options)

SharePlugin

sharing.SharePlugin(options)