create-react-app创建的项目使用css-module问题整理

2021-08-23 10:46:02 浏览数 (1)

create-react-app 项目使用css-module及问题整理

使用 create-react-app 创建的 React TypeScript 项目,如何以 Module 的形式引入 css 呢?

正常情况可以这样引入:

代码语言:javascript复制
import './index.scss';

但是像下面这样:

代码语言:javascript复制
import styles from './index.scss';

就会报错:

代码语言:javascript复制
TS2307: Cannot find module './index.scss' or its corresponding type declarations.

意思差不多是找不到该模块。

理论上 React 默认是支持 sass / scss 的啊,也没错,因为第一种方式是可行的,只不过不支持以模块的形式引入。

解决方法有三种:

  1. 使用 require 引入: const styles = require('./index.scss')
  2. 添加全局声明 create-react-app 创建的 React 项目在 /src 目录有一个 react-app-env.d.ts 文件,添加如下代码: declare module '*.module.css' {   const classes: { readonly key: string: string }   export default classes } declare module '*.module.sass' {   const classes: { readonly key: string: string }   export default classes } declare module '*.module.scss' {   const classes: { readonly key: string: string }   export default classes } 这样就支持 *.css*.sass*.scss 格式文件以模块形式引入了。 import styles from './index.module.scss'; 注意这里需要带 .module ,不然会不生效。
  3. 为了提高代码的可读性,可以把处理 css 的部分单独拆出来。 在根目录新建一个 type-scss.d.ts 文件,将上面的代码复制进去,然后在 tsconfig.jsoninclude 。 /// tsconfig.json {   // ...   "include":      "src",     "type-scss.d.ts" // 配置的 css.d.ts文件    }
  4. 使用 TypeScript 无非就是因为它的代码约束和提示能力,所以比较推荐的一个方法,是为 index.scss 生成 index.scss.d.ts 。 借助插件 typed-css-modules ,通过命令行生成 d.ts ,支持 watch 模式。 安装插件: npm install -g typed-css-modules 执行命令: tcm src 会生成 .d.ts 文件: - src/     | myStyle.css     | myStyle.css.d.ts created 它还支持一些参数: -o 或者 --outDir 指定文件夹 tcm -o dist src (your project root) - src/     | myStyle.css - dist/     | myStyle.css.d.ts created -w 或者 --watch ,监视项目输入目录中的文件,修改后会自动编译。 -c 或者 --camelCase ,自动将 some-component 转换成驼峰发形式 SomeComponent : .SomeComponent {   height: 10px; } 一般使用以下命令就可以: tcm src -w -c

未经允许不得转载:w3h5 » create-react-app创建的项目使用css-module问题整理

0 人点赞