You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tailwind-merge自定义fontSize时忽略文字颜色的配置疑问

解决tailwind-merge与自定义fontSize类的冲突问题

问题根源

tailwind-merge默认把所有text-前缀的类归为同一组(textColor组),合并时会自动覆盖同组的前序类。但你的text-2是自定义的fontSize类,text-primary是文字颜色类,两者本不该互相覆盖,所以需要修改tailwind-merge的分组规则。

解决步骤

1. 创建自定义tailwind-merge配置文件

在Vite项目的src目录下新建一个工具文件,比如src/utils/tw-merge.js(TypeScript项目用.ts)。

2. 扩展tailwind-merge的分组规则

用extendTailwindMerge方法重写类分组,把自定义的fontSize类和颜色类分开:

import { extendTailwindMerge, getDefaultConfig } from 'tailwind-merge'

const defaultConfig = getDefaultConfig()

// 自定义合并规则
export const twMerge = extendTailwindMerge({
  classGroups: {
    // 重写textColor分组:排除数字结尾的text-*类
    textColor: [
      ...defaultConfig.classGroups.textColor.filter(item => 
        typeof item === 'string' && !/^text-\d+(?:\.\d+)?$/.test(item)
      ),
      /^text-(?!\d+(?:\.\d+)?$).+/ // 正则匹配非数字结尾的颜色类
    ],
    // 把自定义数字格式的text-*加入fontSize分组
    fontSize: [
      ...defaultConfig.classGroups.fontSize,
      /^text-\d+(?:\.\d+)?$/ // 匹配text-0、text-0.25、text-2这类自定义字号类
    ]
  }
})

3. 在项目中使用自定义的twMerge

替换原本直接导入的twMerge,改用自己定义的版本:

import { twMerge } from './utils/tw-merge'

// 测试合并
const result = twMerge('text-primary', 'text-2')
// 输出:'text-primary text-2',两个类都保留

4. 配置文件位置说明

Vite项目里这个文件可以放在src/utils、src/lib等任意工具类目录,只要导入路径正确就行。


内容的提问来源于stack exchange,提问作者Testing Rizwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:25:17