模块解析:该选项用于配置 Rspack 模块解析逻辑。
Object
Record<string, false | string | (string | false)[]>
{}
路径别名,例如:
{
"@": path.resolve(__dirname, './src'),
"abc$": path.resolve(__dirname, './src/abc')
}
此时:
require("@/a")
会尝试解析 <root>/src/a
。require("abc")
会尝试解析 <root>/src/abc
。require("abc/file.js")
不会命中匹配规则,它会尝试去解析 node_modules/abc/files.js
。boolean
true
是否按照 package-browser-filed-spec 规则解析。
string[]
[]
与 node 的 conditionNames 相同,用于 package.json 中的 exports
和 imports
字段。
string[]
[".js", ".json", ".wasm", ".tsx", ".ts", ".jsx"]
按照顺序解析模块,例如 require('./index')
,会依次尝试解析 './index.tsx'
、'./index.jsx'
...
Record<string, string[] | string>
{}
定义拓展名的别名,例如
// rspack.config.js
module.exports = {
resolve: {
extensionAlias: {
'.js': ['.ts', '.js'],
},
},
};
在 require('./index.js')
时,会依次尝试解析 './index.ts'
, ./index.js
。
Record<string, false | string>
{}
解析失败时的重定向。
string[]
target
为 web 时为 ["browser", "module", "main"]
["module", "main"]
尝试解析 package.json 中的字段,例如:
// package.json
{
"name": "lib",
"module": "es/index.js"
}
则 import value from 'lib'
的结果为 lib/es/index.js
。
string[]
["index"]
解析目录时的文件名后缀,例如 require('./dir/')
会尝试解析 './dir/index'
。
string[]
["exports"]
自定义 package.json 中的 exports 字段,例如:
// lib/package.json
{
"name": "lib",
"testExports": {
".": "./test.js"
},
"exports": {
".": "./index.js"
}
}
则当配置为 ["testExports", "exports"]
时, import value from 'lib'
的结果为 lib/test.js
。
string[]
["node_modules"]
解析依赖时的目录名。
boolean
false
当开启时,require('file')
会首先寻找当前目录下的 ./file
文件,而不是 <modules>/file
。
string | undefined
undefined
这个选项接受的是 tsconfig.json
的文件路径。在开启这个选项后, Rspack 会基于 tsconfig.json
中 的 paths
和 baseUrl
来寻找模块,其功能等同于 tsconfig-paths-webpack-plugin。
const path = require('path');
/** @type {import('@rspack/cli').Configuration} */
const config = {
// ...
resolve: {
tsConfigPath: path.resolve(__dirname, 'tsconfig.json'),
},
// ...
};
module.exports = config;
不支持 tsconfig.json#extends
字段。
boolean
false
不再解析扩展名,不再解析 package.json 中的 mainFiles(但不会影响来自 mainFiles, browser, alias 的请求)。
Record<string, Resolve>
.依据模块类型自定义 Resolve 配置。