close

source.decorators

  • 类型:
type Decorators = {
  version?: 'legacy' | '2022-03' | '2023-11';
};

用于配置装饰器语法。

decorators.version

  • 类型: 'legacy' | '2022-03' | '2023-11'
  • 默认值: '2023-11'

指定需要使用的装饰器语法版本。

大多数情况下,推荐使用 2023-11

  • 2023-11:最新的 Stage 3 装饰器提案,也是 Rsbuild 的默认值。
  • 2022-03:较早的 Stage 3 装饰器提案。
  • legacy:旧版 Stage 1 装饰器提案,主要用于仍依赖 TypeScript 的 experimentalDecorators 语义的项目。

如果你希望了解不同装饰器版本的区别,可以参考:How does this proposal compare to other versions of decorators?

2023-11

2023-11 对应 2023 年 11 月版本的 Stage 3 装饰器提案。

rsbuild.config.ts
export default {
  source: {
    decorators: {
      version: '2023-11',
    },
  },
};

参考:tc39/proposal-decorators@babel/plugin-proposal-decorators

2022-03

2022-03 对应装饰器 Stage 3 提案,等价于 TypeScript 5.0 默认支持的装饰器语法。

rsbuild.config.ts
export default {
  source: {
    decorators: {
      version: '2022-03',
    },
  },
};

参考:JavaScript meta programming with the 2022-03 decorators APITypeScript 5.0 Decorators

legacy

等价于 TypeScript 的 experimentalDecorators: true

它基于旧版的 Stage 1 装饰器提案,不会再引入新的特性更新,并且在一些边界场景下 Babel 与 TypeScript 的行为可能存在差异。建议在条件允许时迁移到 2023-11

rsbuild.config.ts
export default {
  source: {
    decorators: {
      version: 'legacy',
    },
  },
};

参考:A Complete Guide to TypeScript DecoratorsTypeScript Decorators

版本历史

版本变更内容
v2.0.0新增 2023-11 版本,默认值从 2022-03 改为 2023-11