resolve
与模块解析相关的选项。
resolve.aliasStrategy
resolve.aliasStrategy
控制 resolve.alias 选项与 tsconfig.json 中的 paths 选项的优先级。
resolve.alias
resolve.alias
设置模块路径的别名,用于简化导入路径或重定向模块引用,类似于 Rspack 的 resolve.alias 配置。
对于 TypeScript 项目,你只需要在 tsconfig.json 中配置 compilerOptions.paths 即可,Rstest 会自动识别它,不需要额外配置 resolve.alias 字段。
resolve.dedupe
resolve.dedupe
强制 Rstest 从项目根目录解析指定的包,这可以用于移除重复包和减少包大小。
resolve.extensions
resolve.extensions
自动添加导入文件的扩展名。这意味着你可以导入文件,而不需要显式地写它们的扩展名。
resolve.conditionNames
resolve.conditionNames
控制解析包 exports 字段时使用的条件名称列表。
默认值: 取决于测试环境和依赖类型。
对于 node、jsdom 和 happy-dom 测试,Rstest 继承 Rspack 的默认条件。在默认的 NODE_ENV=test 下,打包 JavaScript 依赖时使用以下条件:
Rstest 在打包时将 NODE_ENV=test 视为开发模式,因此即使 NODE_ENV 为 'test',也会启用 development 条件。匹配入口的优先级由包的 exports 键顺序决定,而非 conditionNames 的排列顺序。
自定义此选项时,可以通过 '...' 保留 Rspack 的默认条件。例如,node 测试可以使用 conditionNames: ['custom', '...'],jsdom / happy-dom 测试则使用 conditionNames: ['browser', 'custom', '...']。显式设置此选项后,Rstest 不再自动添加 browser。
不包含 '...' 的列表会覆盖各依赖类型的默认条件,包括 import 和 require 的区别。
如果需要移除某个默认条件,同时保留 ESM 和 CommonJS 各自的解析条件,请配置 tools.rspack.resolve.byDependency。可参考 Jest 迁移示例,其中演示了如何排除 development,并说明了何时需要包含 browser。
resolve.mainFields
resolve.mainFields
控制包入口字段的优先级顺序,例如 main、module 和 browser。