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.
Used to configure the Rspack module resolution logic.
Object
Record<string, false | string | (string | false)[]>
{}
Path alias, e.g.
At this point:
require("@/a")
will attempt to resolve <root>/src/a
.require("abc")
will attempt to resolve <root>/src/abc
.require("abc/file.js")
will not match, and it will attempt to resolve node_modules/abc/file.js
.string[]
['browser']
Define a field, such as browser
, that should be parsed in accordance with this specification.
string[]
[]
Same as node's conditionNames for the exports
and imports
fields in package.json.
string[]
['package.json']
The JSON files to use for descriptions.
boolean
By default, It changes to true
if resolve.extensions contains an empty string; otherwise, this value changes to false
.
If true
, it will not allow extension-less files. So by default require('./foo')
works if ./foo
has a .js
extension, but with this enabled only require('./foo.js')
will work.
string[]
["exports"]
Customize the exports
field in package.json. e.g.
When this configuration is ["testExports", "exports"]
, the result of import value from 'lib'
is lib/test.js
.
string[]
[".js", ".json", ".wasm"]
Parse modules in order, e.g. require('. /index')
, will try to parse '. /index.js'
, '. /index.json'
...
Record<string, string[] | string>
{}
Define alias for the extension. e.g.
This is particularly useful for TypeScript projects, as TypeScript recommends using the .js
extension to reference TypeScript files.
Rspack will try to resolve './foo.ts'
and ./foo.js'
sequentially when resolving import './foo.js'
.
Record<string, false | string>
{}
Redirect module requests when normal resolving fails.
Rspack does not polyfills Node.js core modules automatically which means if you use them in your code running in browsers or alike, you will have to install compatible modules from NPM and include them yourself.
You could use node-polyfill-webpack-plugin to polyfill Node.js core API automatically.
Or refer to the list of Node.js polyfills used by webpack 4:
string[]
["imports"]
Customize the imports
field in package.json which are used to provide the internal requests of a package (requests starting with #
are considered internal).
e.g.
When this configuration is ["testImports", "imports"], the result of import value from '#foo'
in current package is src/test/foo.js
.
string[]
When importing from an npm package, for example import React from 'react'
, resolve.mainFields
is used to determine which fields in package.json
are resolved.
If target
is 'web'
, 'webworker'
, or not specified, the default value is ["browser", "module", "main"]
.
For any other target
(including 'node'
), the default value is ["module", "main"]
.
For example, consider an arbitrary library called foo
with a package.json
that contains the following fields:
When import foo from 'foo'
, Rspack resolves to the module in the browser
field, because the browser
field has the highest priority in mainFields
array.
string[]
["index"]
The filename suffix when resolving directories, e.g. require('. /dir/')
will try to resolve '. /dir/index'
.
Can configure multiple filename suffixes:
string[]
["node_modules"]
The name of the directory to use when resolving dependencies.
boolean
false
When enabled, require('file')
will first look for the . /file
file in the current directory, not <modules>/file
.
boolean
false
Opt for absolute paths when resolving, in relation to resolve.roots
.
string | object | undefined
undefined
The replacement of tsconfig-paths-webpack-plugin in Rspack.
string
If you pass the path of tsconfig.json
via the option, Rspack will try to resolve modules based on the paths
and baseUrl
of tsconfig.json
, functionally equivalent to tsconfig-paths-webpack-plugin.
string[] | "auto" | undefined
undefined
Supports tsconfig project references defined in tsconfig-paths-webpack-plugin.
The list of tsconfig paths can be provided manually, or you may specify auto
to read the paths list from tsconfig.references
automatically.
This feature is disabled when the value is undefined
.
boolean
false
No longer resolve extensions, no longer resolve mainFiles in package.json (but does not affect requests from mainFiles, browser, alias).
string[]
[]
A list of resolve restrictions to restrict the paths that a request can be resolved on.
string[]
[]
A list of directories where server-relative URLs (beginning with '/') are resolved. It defaults to the context
configuration option. On systems other than Windows, these requests are initially resolved as an absolute path.
boolean
true
Whether to resolve symlinks to their symlinked location.
When enabled, symlinked resources are resolved to their real path, not their symlinked location. Note that this may cause module resolution to fail when using tools that symlink packages (like npm link
).
Record<string, Resolve>
.Customize the Resolve configuration based on the module type.