Rspack provides configurations similar to webpack. This chapter will show you how to use the Rspack configuration.
When you run the Rspack CLI, Rspack automatically reads the rspack.config.*
file in the current working directory.
A basic Rspack configuration file looks like this:
Rspack supports these configuration file formats:
rspack.config.js
: defaults to CommonJS
format, or ES modules
format if the type of the package.json is "module".rspack.config.ts
: TypeScript
format, see TypeScript configuration file for more details.rspack.config.cjs
: Forced to CommonJS
format.rspack.config.mjs
: Forced to ES modules
format.Note that Rspack will first search JS configuration file and then TS configuration file.
See ES modules and CommonJS for the difference between
CommonJS
andES modules
.
When using rspack.config.ts
, you need to use a runtime that supports TypeScript, or install additional dependencies to resolve TypeScript files. You can choose one of the following:
If your JavaScript runtime already natively supports TypeScript, you can use the built-in TS transformation to load the configuration file without needing to install additional dependencies.
For example, Node.js already natively supports TypeScript, you can use the following command to use the Node.js native loader to load the configuration file:
--experimental-transform-types
flag:--experimental-transform-types
flag is no longer required:See Node.js - Running TypeScript Natively for more details.
For lower Node.js versions, you can use esbuild-register
to load the configuration file.
Install esbuild and esbuild-register, no additional configuration is needed.
You can also use ts-node to load the configuration file.
ts-node
:ts-node
to use CommonJS
modules in tsconfig.json
:Use the defineConfig
helper to enable auto-completion. For JavaScript configuration files, you can use the // @ts-check
comment to enable type checking.
Alternatively, you can use JSDoc for type checking.
Specify the name of the configuration file using the --config
option.
For example, if you need to use the rspack.prod.config.js
file when running build, you can add the following scripts to package.json
:
Abbreviate the --config
option to -c
:
Rspack supports exporting a function in Rspack configuration file, you can dynamically compute the configuration in the function and return it to Rspack.
As you can see from the example above, the function takes two input parameters:
env
, which corresponds to the value of the --env
option when running the CLI command.argv
, which contains all the options passed to the CLI.In addition to passing the env
parameter, it is more common to use process.env.NODE_ENV
to determine the current environment:
Use the merge
function exported by webpack-merge
to merge multiple configurations.
For more information of merge
, please refer to webpack-merge documentation.