close

Rslib

本指南介绍如何将 Rstest 集成到 Rslib 项目中,为你的 Rslib 项目提供无缝的测试体验。

快速开始

新项目

通过在创建时添加 --tools rstest 参数,即可创建一个 Rslib + Rstest 项目:

npx create-rslib --template react-ts --tools rstest --dir my-project

脚手架已包含 Rstest 和示例测试,运行 npm run test 即可执行测试。

已有项目

如需为已有项目添加 Rstest,请参考快速开始安装 Rstest 并配置测试脚本。

复用 Rslib 配置

@rstest/adapter-rslib 是 Rstest 官方提供的适配器,允许 Rstest 自动继承现有 Rslib 配置文件中的配置。这样可以确保测试环境与构建配置一致,避免重复配置。

安装适配器

npm
yarn
pnpm
bun
deno
npm add @rstest/adapter-rslib -D

扩展配置

使用适配器中的 withRslibConfig 函数,可以从 Rslib 配置文件中扩展 Rstest 配置。

import { defineConfig } from '@rstest/core';
import { withRslibConfig } from '@rstest/adapter-rslib';

export default defineConfig({
  extends: withRslibConfig(),
  // 额外的 rstest 特定配置
});

这将自动:

  • 加载你的 rslib.config.ts 文件
  • 将兼容的 Rslib 选项映射到 Rstest 配置
  • 与你提供的其他 Rstest 配置合并

默认情况下,适配器使用 process.cwd() 来解析 Rslib 配置。如果配置文件在其他目录,可以设置 cwd

export default defineConfig({
  extends: withRslibConfig({
    cwd: './packages/my-lib',
  }),
});

更多高级选项请参考 @rstest/adapter-rslib 文档

配置映射

适配器会自动将以下 Rslib 选项映射到 Rstest:

Rslib 选项Rstest 等效项说明
lib.idnameLib 名称
pluginsplugins插件配置
source.decoratorssource.decorators装饰器支持
source.definesource.define全局常量
source.includesource.include额外需要 SWC 编译的代码文件
source.excludesource.exclude不需要 SWC 编译的代码文件
source.tsconfigPathsource.tsconfigPathTypeScript 配置路径
resolveresolve模块解析
output.cssModulesoutput.cssModulesCSS Modules 配置
tools.rspacktools.rspackRspack 配置
tools.swctools.swcSWC 配置
tools.bundlerChaintools.bundlerChainBundler chain 配置
output.targettestEnvironmentweb 映射为 'happy-dom',node 及其他映射为 'node'

调试配置

如需查看适配器返回的解析后配置,可以打印结果:

export default defineConfig({
  extends: async (user) => {
    const config = await withRslibConfig({ libId: 'react' })(user);
    console.log('Extended config:', JSON.stringify(config, null, 2));
    return config;
  },
});

相关文档