Tailwind 插件没有生效,最常见的原因通常集中在两点:第一,没有在 tailwind.config.js 的 plugins 数组中手动完成注册;第二,自定义插件没有通过 tailwindcss/plugin 正确封装,也没有显式调用 addUtilities 等 API。出现这类情况后,相关类名就无法进入 Tailwind 的构建流程,最终自然不会生成,也就无法正常生效。

tailwind.config.js 里没有注册插件,或者插件函数没有使用 tailwindcss/plugin 进行封装 —— 这都会导致类名无法进入构建流程,最终不会被生成。
插件没有添加到 plugins 数组
Tailwind CSS 不会自动识别或扫描 node_modules 中的插件,必须手动引入,并放到配置文件的 plugins 字段中。
- 只执行了
npm install -D @tailwindcss/typography,但在tailwind.config.js中没有添加require('@tailwindcss/typography') - 使用了
import语法,但项目没有配置"type": "module",从而导致require报错,或者插件加载静默失败 - 本地插件引用路径写错,例如写成
require('./plugins/my-plugin'),但真实文件路径其实位于./src/plugins/
自定义插件没有使用 tailwindcss/plugin 封装
如果只是直接导出普通对象或函数,Tailwind 通常无法正确识别该插件。
- 错误示例:
module.exports = { '.my-utility': { display: 'flex' } }—— 这种写法导出的对象会被直接忽略 - 正确方式:必须先使用
const plugin = require('tailwindcss/plugin'),再通过plugin(function({ addUtilities }) { ... })完成插件定义 theme()只能在插件函数内部调用,如果在外部写成theme: { extend: { ... } },是不会生效的
插件中没有调用 addUtilities 或 addComponents
即使插件已经被成功加载,如果没有显式注册样式工具类或组件类,Tailwind 仍然不会生成对应类名。
- 写了
plugin(() => {}),但函数体是空的,或者里面只有console.log之类的调试代码 - 想生成响应式类或状态类,但忘记传入
variants参数,例如:addUtilities(..., { variants: ['hover', 'group-hover'] }) - 使用
addComponents添加组件类时,没有加上@layer components前缀,导致优先级异常,或者 Purge 行为出现问题
PostCSS 插件未启用,@tailwind 指令被当作普通文本或注释处理
即便 tailwind.config.js 配置正确、插件也已经注册,如果 PostCSS 处理链没有生效,最终输出的 CSS 文件中仍然会保留 @tailwind base; 这类原样文本。
- Vite 用户:检查
postcss.config.js中是否包含require('@tailwindcss/postcss'),而不是旧版本配置中的tailwindcss - CRA 用户:默认情况下对 PostCSS 自定义支持有限,通常需要借助
craco注入配置,或者直接eject - Webpack 用户:确认
css-loader的modules选项为false;如果启用后类名被哈希化,就会与插件生成的原始类名无法对应
