Rsbuild Types

本章节描述了 Rsbuild 提供的一些类型定义。

RsbuildInstance

Rsbuild 实例的类型,对应 createRsbuild 方法的返回值。

import type { RsbuildInstance } from '@rsbuild/core';

let rsbuild: RsbuildInstance;

RsbuildConfig

Rsbuild 配置的类型。

import type { RsbuildConfig } from '@rsbuild/core';

const config: RsbuildConfig = {
  // ...
};

你也可以引用 Rsbuild 配置中各个字段的类型定义:

import type {
  DevConfig,
  HtmlConfig,
  ToolsConfig,
  SourceConfig,
  ServerConfig,
  OutputConfig,
  SecurityConfig,
  PerformanceConfig,
  ModuleFederationConfig,
} from '@rsbuild/core';

NormalizedConfig

Rsbuild 配置归一化后的类型,对应 getNormalizedConfig 方法的返回值。

import type { NormalizedConfig } from '@rsbuild/core';

const config: NormalizedConfig = api.getNormalizedConfig();

你也可以引用归一化后的 Rsbuild 配置中各个字段的类型定义:

import type {
  NormalizedDevConfig,
  NormalizedHtmlConfig,
  NormalizedToolsConfig,
  NormalizedSourceConfig,
  NormalizedServerConfig,
  NormalizedOutputConfig,
  NormalizedSecurityConfig,
  NormalizedPerformanceConfig,
  NormalizedModuleFederationConfig,
} from '@rsbuild/core';

NormalizedEnvironmentConfig

指定环境下的 Rsbuild 归一化配置类型,对应 getNormalizedConfig({ environment }) 方法的返回值。

import type { NormalizedEnvironmentConfig } from '@rsbuild/core';

const config: NormalizedEnvironmentConfig = api.getNormalizedConfig({
  environment,
});

RsbuildContext

Rsbuild 实例中 context 属性的类型定义。

import type { RsbuildContext } from '@rsbuild/core';

const context: RsbuildContext = rsbuild.context;

RsbuildPlugin

Rsbuild 插件的类型。

import type { RsbuildPlugin } from '@rsbuild/core';

const myPlugin: RsbuildPlugin = {
  name: 'my-plugin',
  setup() {},
};

RsbuildPluginAPI

Rsbuild 插件中,setup 函数传入的 api 对象的类型。

import type { RsbuildPluginAPI } from '@rsbuild/core';

const myPlugin = {
  name: 'my-plugin',
  setup(api: RsbuildPluginAPI) {},
};

RsbuildTarget

Rsbuild 构建产物的类型。

import type { RsbuildTarget } from '@rsbuild/core';

EnvironmentContext

Environment context 是一个只读对象,提供一些和当前环境有关的上下文信息。

type EnvironmentContext = {
  name: string;
  browserslist: string[];
  config: NormalizedEnvironmentConfig;
  distPath: string;
  entry: RsbuildEntry;
  htmlPaths: Record<string, string>;
  tsconfigPath?: string;
};

environment.name

当前环境的唯一名称,用于区分和定位环境,对应于 environments 配置中的 key。

  • 类型: string

environment.browserslist

项目兼容的目标浏览器范围。详情可参考 设置浏览器范围.

  • 类型: string[]

environment.config

归一化后当前环境的 Rsbuild 配置

  • 类型:
type NormalizedEnvironmentConfig = DeepReadonly<{
  dev: NormalizedDevConfig;
  html: NormalizedHtmlConfig;
  tools: NormalizedToolsConfig;
  source: NormalizedSourceConfig;
  server: NormalizedServerConfig;
  output: NormalizedOutputConfig;
  plugins?: RsbuildPlugins;
  security: NormalizedSecurityConfig;
  performance: NormalizedPerformanceConfig;
  moduleFederation?: ModuleFederationConfig;
}>;

environment.distPath

构建产物输出目录的绝对路径,对应 RsbuildConfig 中的 output.distPath.root 配置项。

  • 类型: string

environment.entry

构建入口对象,对应 source.entry 选项。

  • 类型:
type RsbuildEntry = Record<string, string | string[] | EntryDescription>;

environment.htmlPaths

HTML 产物的路径信息。该 API 会返回一个对象,对象的 key 为 entry 名称,value 为 HTML 文件在产物目录下的相对路径。

  • 类型:
type htmlPaths = Record<string, string>;

environment.tsconfigPath

tsconfig.json 文件的绝对路径,若项目中不存在 tsconfig.json 文件,则为 undefined。

  • 类型:
type TsconfigPath = string | undefined;

CreateRsbuildOptions

createRsbuild 方法的入参类型。

import type { CreateRsbuildOptions } from '@rsbuild/core';

InspectConfigOptions

rsbuild.inspectConfig 方法的入参类型。

import type { InspectConfigOptions } from '@rsbuild/core';

Rspack

包含 @rspack/core 导出的所有类型,比如 Rspack.Configuration

import type { Rspack } from '@rsbuild/core';

const rspackConfig: Rspack.Configuration = {};

Others

  • OnExitFn
  • OnAfterBuildFn
  • OnAfterCreateCompilerFn
  • OnAfterStartDevServerFn
  • OnAfterStartProdServerFn
  • OnBeforeBuildFn
  • OnBeforeStartDevServerFn
  • OnBeforeStartProdServerFn
  • OnBeforeCreateCompilerFn
  • OnCloseDevServerFn
  • OnDevCompileDoneFn
  • ModifyRsbuildConfigFn
  • ModifyBundlerChainFn
  • ModifyRspackConfigFn
  • TransformFn,
  • TransformHandler
  • more...