生产 Gatsby 博客未在 MDX 文件中呈现 TailwindCSS 类

Posted

技术标签:

【中文标题】生产 Gatsby 博客未在 MDX 文件中呈现 TailwindCSS 类【英文标题】:Production Gatsby blog not rendering TailwindCSS classes in MDX files 【发布时间】:2021-02-15 19:40:25 【问题描述】:

我正在基于此 Leonids 启动器开发我的 Gatsby blog/site。进行了一些更改以添加适合我需要的功能,包括使用.mdx 文件来编写页面和帖子,以便我可以在 MD 中添加 JS。

使用gatsby develop 工作和预览网站时,一切看起来都不错。现在,在进行生产时,.mdx 文件中的组件中使用的 Tailwind 类不会呈现。尝试将包含@tailwind utilitiesglobal.css 文件导入mdx,但没有成功。类出现在检查器中,但不在 CSS 中呈现任何样式。

在 tsx 或 js 文件中使用 Tailwind 类时,它们可以工作。但当我在 mdx 文件中使用这些类设置样式的组件中使用它们时,则不然。

那么在构建产品站点和开发站点时真正发生了哪些变化?我真的不知道下一步该尝试什么,因为没有任何错误或警告。

这是该网站的repo。 this 是一个按钮没有选择 Tailwind 类的示例。

为什么会这样?

谢谢大家!希望我带来了足够的信息。

干杯!

【问题讨论】:

【参考方案1】:

解决了!

对于偶然发现此问题的任何人,发生的事情是 TailwindCSS 使用 PurgeCSS 来清理任何未使用的类。此清理仅在生产版本上完成,在开发中,它们始终可用于快速更改。

我只需将.mdx 添加到tailwind.config.js 文件的排除列表中。像这样:

module.exports = 
  purge: ["./src/**/*.js", "./src/**/*.jsx", "./src/**/*.ts", "./src/**/*.tsx", "./content/**/*.mdx"],
  ...

我的 .mdx 文件在 ./content/... 下,所以我只是将表达式添加到列表中,以便清除过程也考虑这些文件。

我意识到这是问题所在,因为 Tailwind 类在 js 文件中工作,一些类在 chrome devtools 中加载并可见。

【讨论】:

以上是关于生产 Gatsby 博客未在 MDX 文件中呈现 TailwindCSS 类的主要内容,如果未能解决你的问题,请参考以下文章

Gatsby 的 StaticImage 未在 Storybook 中呈现

MDX 中的 Gatsby 静态图像(gatsby-plugin-image)

使用 Gatsby mdx.slug 的重复页面

使用 gatsby-source-graphql 时,GraphIQL 资源管理器未在 Gatsby 中显示

无法从 gatsby-plugin-mdx 导入 MDXRenderer

连接两个 gatsby 节点