Typed CSS Modules 插件

Typed CSS Modules 插件用于为项目中的 CSS Modules 文件生成类型声明文件。

快速开始

安装插件

你可以通过如下的命令安装插件:

npm
yarn
pnpm
bun
npm add @rsbuild/plugin-typed-css-modules -D

注册插件

你可以在 rsbuild.config.ts 文件中注册插件:

rsbuild.config.ts
import { pluginTypedCSSModules } from '@rsbuild/plugin-typed-css-modules';

export default {
  plugins: [pluginTypedCSSModules()],
};

示例

通过添加 Typed CSS Modules 插件,Rsbuild 会为项目中所有的 CSS Modules 文件生成类型声明文件。

例如,创建 src/index.tssrc/index.module.css 两个文件:

src/index.ts
import styles from './index.module.css';

console.log(styles.pageHeader);
index.module.css
.page-header {
  color: black;
}

构建后,Rsbuild 会自动生成 src/index.module.css.d.ts 类型声明文件:

src/index.module.css.d.ts
interface CssExports {
  'page-header': string;
  pageHeader: string;
}
declare const cssExports: CssExports;
export default cssExports;

此时再打开 src/index.ts 文件,可以看到 styles 对象已经具备了准确的类型。

具名导出

在开启 output.cssModules.namedExport 的情况下,生成的类型声明文件仅会包含具名导出。

比如:

index.module.css
.page {
  color: black;
}
.header {
  color: white;
}

生成的类型:

src/index.module.css.d.ts
export const page: string;
export const header: string;

配置 Git

在上述例子中,src/index.module.css.d.ts 是编译生成的代码,你可以选择将它们提交到 Git 仓库里,也可以选择在 .gitignore 文件中忽略它们:

# Ignore auto generated CSS declarations
*.module.css.d.ts
*.module.sass.d.ts
*.module.scss.d.ts
*.module.less.d.ts
*.module.styl.d.ts
*.module.stylus.d.ts

此外,如果生成的代码导致了 ESLint 报错,你也可以将上述配置添加到 .eslintignore 文件里。