close

source

与输入的源代码相关的选项。

source.decorators source.decoratorssource.decorators

用于配置装饰器语法。

如果你使用了 TypeScript 的 experimentalDecorators,此处应将 source.decorators.version 设置为 legacy。

source.assetsInclude source.assetsIncludesource.assetsInclude

指定额外需要按静态资源处理的文件。

当你的测试会导入 Rsbuild 默认资源规则之外的文件类型时,这个配置很有用,比如 .txt.md

import { defineConfig } from '@rstest/core';

export default defineConfig({
  source: {
    assetsInclude: /\.(txt|md)$/,
  },
});

如果你已经通过 @rstest/adapter-rsbuild@rstest/adapter-rslib 复用 Rsbuild / Rslib 配置,source.assetsInclude 也会被自动继承。

source.define source.definesource.define

构建时将代码中的变量替换成其它值或者表达式,可以用于在构建时向代码注入环境变量等信息。

source.exclude source.excludesource.exclude

排除不需要被 SWC 转译的 JavaScript 或 TypeScript 文件。

Note

source.exclude 中配置的文件不会经过 SWC 转译,但被引用的文件仍然会被打包到产物中。

如果你希望某些文件不被打包到产物中,可以使用 output.externals 配置项或 Rspack 的 IgnorePlugin

source.include source.includesource.include

指定额外需要编译的 JavaScript 文件。

source.transformImport source.transformImportsource.transformImport

配置按需导入转换规则。

rstest.config.ts
import { defineConfig } from '@rstest/core';

export default defineConfig({
  source: {
    transformImport: [
      {
        libraryName: 'demo-lib',
        libraryDirectory: '.',
        camelToDashComponentName: false,
      },
    ],
  },
});
Caution

source.transformImport 会在编译阶段改写最终的模块请求。

当前实现下,rs.mock('pkg')rs.doMock('pkg')rs.importActual('pkg')rs.requireActual('pkg') 这类仍然使用原始 specifier 的模块级 mock API,可能无法命中被改写后的模块请求。

source.tsconfigPath source.tsconfigPathsource.tsconfigPath

配置自定义的 tsconfig.json 文件路径,可以是相对路径或绝对路径。