tailwind v3+ 的 jit 模式不可禁用,所谓“禁用”实为配置错误导致失效并退化为全量编译;必须删除 mode、purge 等废弃字段,确保 content 为精准数组、版本 ≥3.0.0、终端显示 “using jit mode”,否则 jit 空转致样式丢失或构建变慢。

不能禁用 —— Tailwind v3+ 的 JIT 模式是强制启用、不可关闭的底层机制,所谓“禁用”实际是配置错误导致 JIT 失效,进而退化为全量编译,反而更慢、更臃肿。
为什么 tailwind.config.js 里的 mode: 'jit' 必须删掉
v3.0+ 彻底移除了 mode 配置项。mode: 'jit' 不仅无效,还会触发兼容性降级或报错;mode: 'aot' 或 purge 字段同样必须删除,否则 JIT 引擎直接跳过,回退到扫描全部工具类的旧流程。
- 检查
tailwind.config.js:删掉所有mode、purge相关字段 - 运行
npx tailwindcss -v确认输出是v3.x.x(如v3.4.3) - 启动 dev server 后终端必须出现
Using JIT (Just-In-Time) mode—— 没这行就说明 JIT 没跑起来
TAILWIND_MODE=build 不是“禁用 JIT”,而是切断监听
TAILWIND_MODE=build 会让 JIT 引擎放弃文件监听,每次保存都执行完整 CSS 重生成,体验接近 v2。这不是禁用 JIT,是让它“瞎忙”。
- 开发时只应设
TAILWIND_MODE=watch或完全不设(v3 默认行为) -
TAILWIND_MODE=build仅适用于 CI/CD 中一次性构建验证,不用于本地开发 - Next.js/Vite 用户若发现热更新卡顿,先查是否被脚本或插件意外注入了
TAILWIND_MODE=build
真正让 JIT “失效”的常见操作
这些操作不会禁用 JIT,但会让它扫描不到 class,结果就是样式不生成、HMR 失效、构建体积暴涨——看起来像“没 JIT”,其实是 JIT 在空转。
-
content写成字符串(如content: './src/**/*.{ts,tsx}')→ 必须是数组:content: ['./src/**/*.{ts,tsx}'] - 漏掉关键路径:Next.js 项目没加
./app/**/*.{ts,tsx},Vue 项目没加./src/**/*.vue - 动态拼接类名:
className={`text-${size}-500`}→ JIT 无法解析变量,对应规则根本不会进 CSS - 用了
@tailwindcss/jit包 → 立即npm rm @tailwindcss/jit,它与 v3 冲突
所谓“禁用 JIT”,本质是配置偏离了 v3 的约定,导致引擎无法工作。Tailwind v3 的设计哲学就是 JIT 即默认,没有开关,只有对与错 —— 错的配置比“禁用”更糟。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











