close
logo
Rslib
指南
配置
博客
English
简体中文
指南
配置
博客
English
简体中文
logo
Rslib

开始

介绍
快速上手
名词解释
NPM 包

解决方案

Node.js
React
Vue

基础

命令行工具
配置 Rslib
使用 TypeScript
产物输出格式
产物结构
升级 Rslib

进阶

处理三方依赖
产物兼容性
类型生成
引用静态资源
引用 SVGR
引用 JSON 文件
模块联邦
使用 Storybook

迁移

Modern.js Module
tsup

常见问题

功能类问题
📝 在 GitHub 上编辑此页
上一页配置 Rslib
下一页产物输出格式

#使用 TypeScript

Rslib 默认支持 TypeScript,你可以直接在项目中使用 .ts 和 .tsx 文件。

#TypeScript 转译

Rslib 默认使用 SWC 进行 TypeScript 代码的转译,同时也支持切换到 Babel 进行转译。

#isolatedModules

不同于原生的 TypeScript 编译器,SWC 和 Babel 这类工具会单独编译每个文件,这会导致无法确定导入的名称是类型还是值。因此,在 Rslib 中使用 TypeScript 时,你需要在 tsconfig.json 文件中启用 isolatedModules 选项:

tsconfig.json
{
  "compilerOptions": {
    "isolatedModules": true
  }
}

这个选项可以帮助你避免使用某些在 SWC 和 Babel 中无法正确编译的语法,例如跨文件的类型引用。它会引导你修正为对应正确的用法:

// 错误
export { SomeType } from './types';

// 正确
export type { SomeType } from './types';

更多关于 SWC 和 tsc 之间差异的详细信息,可以查看 SWC - Migrating from tsc。

#预设类型

@rslib/core 提供了一些预设的类型定义,包含 CSS Modules、静态资源、import.meta 等类型。

你可以创建一个 src/env.d.ts 文件来引用:

src/env.d.ts
/// <reference types="@rslib/core/types" />

#类型检查

在进行 TypeScript 转译时,SWC 和 Babel 等工具不会执行类型检查。

Rslib 提供了 lib.dts 配置项用于生成 TypeScript 声明文件,生成过程中默认会进行类型检查。

你可以在 tsconfig.json 文件中将 noCheck 配置项设置为 true 来跳过类型检查。

#tsconfig.json 路径

Rslib 默认从根目录下读取 tsconfig.json 文件。你可以使用 source.tsconfigPath 配置一个自定义的 tsconfig.json 文件路径。

rslib.config.ts
export default {
  lib: [
    // ...
  ],
  source: {
    tsconfigPath: './tsconfig.custom.json',
  },
};

#装饰器版本

默认情况下,Rslib 会使用 2022-03 版本的装饰器。

如果在 tsconfig.json 中启用了 experimentalDecorators,Rslib 会默认将 source.decorators.version 设置为 legacy 来使用旧版本装饰器。