html
执行 npx tailwindcss -i input.css -o output.css --minify 后,output.css 生成但内容为空(仅可能含注释或换行),无任何 .bg-blue-500、.flex 等实用类输出。该现象在 v3.0+ JIT 模式下尤为典型——它不是编译失败,而是“零匹配成功”的静默结果。Tailwind 默认启用 PurgeCSS 兼容逻辑(v3.3+ 已深度集成于 JIT 引擎),其核心原则是:未在 content 路径中被静态分析到的类名,一律不生成对应 CSS 规则。
CLI 模式下若未提供 tailwind.config.js 或未显式传入 --content 参数,Tailwind 将使用空数组作为默认 content 值,导致扫描范围为零。常见错误示例:
content: ["./pages//*.js"]→ 遗漏.tsx和.html,React/Next/Vite 项目失配content: ["src//*"]→ 通配符未声明扩展名,Node.js glob 不识别(需显式写.{js,jsx,ts,tsx,html})content: ["../src//*.{js}"]→ 相对路径基于 CLI 当前工作目录(CWD),非配置文件位置
即使 content 配置正确,若 input.css 内容如下,则仍输出为空:
@tailwind base; @tailwind components; @tailwind utilities;
⚠️ 注意:@tailwind 指令必须位于 @layer 块内(v3.4+ 推荐),否则部分构建器(如 PostCSS 8.4+)可能忽略解析。
src/组件/Home.jsx 中 class 使用正常,但 Tailwind 扫描失败
npx tailwindcss --content "./src//*.{js,jsx}" --dry-run 空格/括号
my app/src/index.html → glob 匹配中断
ls "my app/src//*.html" 2>/dev/null || echo "glob failed"
- 干运行验证扫描结果:
npx tailwindcss --content "./src//*.{js,jsx,ts,tsx,html}" --dry-run --log-level verbose,观察日志中Content files scanned:是否列出预期文件 - 强制保留全部类(临时绕过 Purge):
npx tailwindcss -i input.css -o output.css --minify --class-protect false(v3.4+ 支持),若此时输出非空,100%确认为 content 扫描问题 - watch 模式实时反馈:
npx tailwindcss -i input.css -o output.css --watch --content "./src//*.{js,jsx}",修改 JSX 中 class 后观察输出 CSS 是否增量更新
Tailwind 的 JIT(Just-in-Time)引擎本质是按需编译的 CSS 代码生成器,而非传统 CSS 预处理器。它将 class 字符串作为 DSL 输入,动态合成原子化规则。当 content 扫描返回空 AST 节点集合时,引擎不会“降级输出全量 CSS”,而是严格遵循“所见即所得”契约——这是性能与确定性的双重保障。因此,“空输出”在架构层面是 JIT 设计的 预期收敛态,而非 bug。
大型项目常需区分 dev/prod content 范围(如 dev 包含 Storybook 组件,prod 仅打包入口):
module.exports = { content: [
// 生产必选
'./src//*.{js,jsx,ts,tsx,html}',
// 开发增强(避免 --watch 时漏文件)
'./stories//*.{js,jsx,ts,tsx}',
'./public//*.html',
], safelist: [‘prose’, ‘prose-headings’], // 关键动态类白名单 }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/258588.html