可以在Vite-React项目中使用styleName来简化书写scss module样式

可以在vite-react项目中使用styleName属性的插件https://www.yarnpkg.cn/package/vite-plugin-react-css-module-stylename

Vite-plugin-react-css-module-styleName

此插件支持 scss 和 less

我们首先需要安装一下scss转换插件
npm install postcss-scss --dev

yarn add postcss-scss --dev

如果你使用less,请安装

npm install postcss-less --dev

yarn add postcss-less --dev

正式安装插件

npm install vite-plugin-react-css-module-stylename --save--dev

yarn add vite-plugin-react-css-module-stylename --save
 

因为有元素属性校验的原因,所以我们应该在vite-env.d.ts文件中加入

namespace React {
  interface Attributes {
    styleName?: string;
  }
}

然后我们在vite(vite.config.js/ts)配置文件中添加下面的新增设置

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import reactCssModuleStyleName, { generateScopedName } from 'vite-plugin-react-css-module-styleName';

export default defineConfig(({ mode }) => ({
  plugins: [
    react(),
    reactCssModuleStyleName({ generateScopedName: generateScopedName, env: mode })
  ],
  server: {
    open: true
  },
  css: {
    modules: {
      generateScopedName: (name: string, filename: string) => {
        return generateScopedName(name, filename);
      }
    }
  }
}));

示例

import './index.module.scss';

import './index.module.less'

<div styleName="demo">demo</div> // 元素中的使用
 

如果配置后出现下方错误:

Class extends value undefined is not a constructor or null

请在package.json中加入下方版本,安装后请在尝试一次

"resolutions": {
  "postcss": "^8.4.38",
  "postcss-scss": "^4.0.9" or "postcss-scss": "^6.0.0"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值