Compiler
The Compiler is a core object in Rspack. A Compiler instance is created when you call Rspack's JavaScript API or CLI.
It provides methods like run and watch to start builds, and exposes Compiler hooks that allow plugins to hook into different stages of the build process.
Compiler methods
run
Starts a compilation and calls the callback when compilation completes or fails with an error.
If you need to call the run method on the same compiler object multiple times, note the following:
- This API doesn't support concurrent compilation. Before starting a new compilation, call
compiler.close()in thecompiler.runcallback and wait for it to finish before callingcompiler.runagain. Running multiple compilations simultaneously can produce unexpected output files. - Rspack's cache invalidation relies on the
modifiedFilesandremovedFilesparameters. When caching is enabled and you're using a custom watcher, pass these values to Rspack via theoptionsparameter.
watch
Watches files and directories, starting a compilation after they change. Calls the handler after each compilation completes or fails.
This API only supports one compilation at a time. Call compiler.close in the compiler.watch callback and wait for it to finish before calling compiler.watch again. Concurrent compilations will corrupt output files.
The Watching object provides the following methods:
watch:- Type:
(files: string[], dirs: string[], missing: string[]): void - Usage: Adds files and directories to watch.
- Type:
invalidate:- Type:
(callback: () => void): void - Usage: Immediately ends the current watch cycle and starts a new compilation with the recorded file changes, without stopping the watcher.
- Type:
suspend:- Type:
(): void - Usage: Enters watch-only mode and doesn't start new compilations.
- Type:
resume:- Type:
(): void - Usage: Exits watch-only mode and starts a compilation with the recorded file changes.
- Type:
close:- Type:
(callback: () => void): void - Usage: Stops the watcher.
- Type:
close
Closes the compiler and handles low-priority tasks like caching.
getInfrastructureLogger
Create a logger object that is not associated with any compilation, which is used to print global logs.
getCache
Creates a cache object to share data during the build process.
purgeInputFileSystem
Stops the input file system read loop, which contains an internal timer that may prevent the process from exiting after calling compiler.close.
createChildCompiler
Runs another Rspack instance inside Rspack as a child compiler with different settings. Copies all hooks and plugins from the parent (or top-level) compiler and creates a child Compiler instance. Returns the created Compiler.
runAsChild
Runs the child compiler, performing a complete compilation and generating assets.
isChild
Whether this compiler is a child compiler.
Compiler properties
hooks
See compiler hooks for more details.
rspack
- Type:
typeof rspack
Get the exports of @rspack/core to obtain the associated internal objects. This is especially useful when you cannot directly reference @rspack/core or there are multiple Rspack instances.
A common example is accessing the sources object in a Rspack plugin:
webpack
- Type:
typeof rspack
Equivalent to compiler.rspack, this property is used for compatibility with webpack plugins.
If the Rspack plugin you are developing needs to be webpack compatible, you can use this property instead of compiler.rspack.
name
- Type:
string
Get the name:
- For the root compiler, it is equivalent to
name. - For the child compiler, it is the value passed into
createChildCompiler. - For the MultiCompiler and in the KV form, it is the key.
context
Current project root directory:
- Created through
new Compiler, it is the value passed in. - Created through
rspack({}), it is context configuration.
root
- Type:
Compiler
Get the root of the child compiler tree.
options
- Type:
RspackOptionsNormalized
Get the full options used by this compiler.
watchMode
- Type:
boolean
Whether started through compiler.watch.
watching
- Type:
Watching
Get the watching object, see watch method for more details.
running
- Type:
boolean
Whether the compilation is currently being executed.
inputFileSystem
- Type:
InputFileSystem
Get the proxy object used for reading from the file system, which has optimizations such as caching inside to reduce duplicate reading of the same file.
outputFileSystem
- Type:
OutputFileSystem
Get the proxy object used for writing to the file system, fs by default.
watchFileSystem
- Type:
WatchFileSystem
Get the proxy object used for watching files or directories changes, which provides a watch method to start watching, and passes in the changed and removed items in the callback.
MultiCompiler
The MultiCompiler module allows Rspack to run multiple configurations in separate compilers. If the options parameter in the Rspack's JavaScript API is an array of options, Rspack applies separate compilers and calls the callback after all compilers have been executed.
It can also be created through new MultiCompiler:
MultiCompiler also provides some methods and attributes of the Compiler.
MultiCompiler methods
setDependencies
Specify the dependency relationship between the compilers, using compiler.name as the identifier, to ensure the execution order of the compilers.
validateDependencies
Check whether the dependency relationship between the compilers is legal. If there is a cycle or a missing dependency, it will trigger the callback.
run
Execute the run method of each compiler according to the dependency relationship to start the compilation process.
watch
Execute the watch method of each compiler according to the dependency relationship to start watching, and start a compilation process after the file changes.
close
Execute the close method of each compiler to close them, and handle low-priority tasks such as caching during this period.
purgeInputFileSystem
Execute the purgeInputFileSystem of each compiler to stop the read loop of the file system
getInfrastructureLogger
Create a logger object that is not associated with any compilation, which is used to print global logs.
Same with
compilers[0].getInfrastructureLogger()
MultiCompiler properties
compilers
- Type:
Compiler[]
Get all included compilers.
options
ReadOnly- Type:
RspackOptionsNormalized[]
Get all the full options used by the compilers.
inputFileSystem
WriteOnly- Type:
InputFileSystem
Set the proxy object used for reading from the file system for each compiler.
outputFileSystem
WriteOnly- Type:
OutputFileSystem
Set the proxy object used for writing from the file system for each compiler.
watchFileSystem
WriteOnly- Type:
WatchFileSystem
Set the proxy object used for watching files or directories changes for each compiler.
running
- Type:
boolean
Whether the compilation is currently being executed.

