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
CommonJSandES 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.