react脚手架中使用sass/less modules
背景
还是在看 react 项目代码时发现引入 css 时并不是直接import 'xx.less'
, 而是通过import style from 'xx.less'
的方式引入, 前者引入实际上是全局的 css 配置, 可能会全局污染别的组件, 而后者则通过 css module 的方式使 css 只作用于当前组件
配置 css module
配置中的importLoaders
必须是 3
sass
create-react-app
react 的脚手架默认支持了 sass, 所以不需要额外安装 sass 及 sass-loader, 同时也支持了 sass in css module, 通过npm run eject
可以看到 webpack 中对应的配置.
1 |
|
importLoader
这里importLoader
作用于css-loader
, 必须是 3 的原因是, sass-loader
前面还有postcss-loader
和css-loader
正好三个 loader
less
脚手架默认不支持 less, 先安装 less 和 less-loader
1 |
|
然后配置 webpack, 如果要支持import .. from
需要设置module: true
, 需要注意的是,直接 import 和 import…from 是互斥的
1 |
|
使用 css modules
sass
- 新建
[name].module.scss
, 文件名必须带有module, 否则不会被识别为 css modules - 在 tsx 中使用
1 |
|
1 |
|
less
- 随便新建
[name].less
- (optional)如果使用的是 typescript, 默认 typescript 无法识别
import xx from 'xx.less
, 会报错TS2307: Cannot find module ‘./style.less’ or its corresponding type declarations., 需要在src/
下新建react-app-env.d.ts
, 把下面声明加到文件中, 错误消失
1 |
|
- 使用方法同 sass
reference
react脚手架中使用sass/less modules
https://mariana-yui.github.io/2022/06/13/2022-06-13-react-css-module/