接口: Resolve
Resolve 选项用于控制 Rspack 的模块解析行为。
属性
alias?
optionalalias?:Record<string,string|false|string[]>
创建别名,以便更方便地 import 或 require 某些模块。
默认值
示例
也可以在对象的 key 末尾添加 ` 来表示精确匹配:
会得到以下结果:
resolve.alias 可用于控制 npm 包的解析方式。
- 将
react替换为@lynx-js/react:
这样就可以在 ReactLynx 中使用一些直接依赖 react 的第三方库。
- 强制使用同一版本的
dayjs:
请注意这种做法存在风险,因为所有的 dayjs(包括依赖的依赖)都会被解析到项目中的版本。版本不匹配可能导致编译时和运行时错误。
将 resolve.alias 设置为 false 会忽略某个模块。
aliasStrategy?
optionalaliasStrategy?:"prefer-tsconfig"|"prefer-alias"
设置路径别名解析的策略,用于控制 tsconfig.json 中的 paths 选项与 Rsbuild 的 resolve.alias 选项之间的优先级关系。
默认值
'prefer-tsconfig'
备注
prefer-tsconfig(默认):tsconfig.json中的paths选项优先于 Rsbuild 的resolve.alias选项。prefer-alias:Rsbuild 的resolve.alias选项优先于tsconfig.json中的paths选项。
示例
dedupe?
optionaldedupe?:string[]
强制从项目根目录解析指定的包,可用于对包进行去重并减小 bundle 体积。
默认值
备注
Resolve.dedupe 基于 Resolve.alias 实现,它会在项目根目录下通过 require.resolve 获取指定包的路径,并将其设置为别名。
Resolve.dedupe 生成的别名会与项目中配置的 Resolve.alias 合并,当 key 相同时,Resolve.alias 配置的优先级更高。
示例
使用项目根目录下的 tslib。
extensions?
optionalextensions?:string[]
Lynx Default Changed
导入模块时自动解析文件扩展名。这意味着你可以在导入文件时省略扩展名。
默认值
['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json', '.cjs']
备注
例如,导入 './index' 时,Rsbuild 会按以下顺序尝试解析:
-
./index.ts -
./index.tsx -
./index.mjs -
./index.js -
./index.jsx -
./index.json -
./index.cjs
resolve.extensions 与 tools.rspack.resolve.extensions 的区别:
resolve.extensions:替换默认列表;pluginLynx 仍会追加 .cjs。
tools.rspack.resolve.extensions:通过 webpack-merge 与默认配置合并。