gpt4 book ai didi

Gatsby 动态样式在生产版本中不起作用

转载 作者:行者123 更新时间:2023-12-04 12:23:07 27 4
gpt4 key购买 nike

我是 Gatsby 的新手,我正在使用带有 postcss 的 tailwind css。我在 tailwind.config.js 的主题对象中定义的一些颜色配置在开发环境中有效,但在生产环境中无效。我曾尝试清理缓存并删除公用文件夹并重新构建它。那并没有解决问题。我在 tailwind.config.js 中的主题对象是这样的:

theme: {
colors: {
transparent: 'transparent',
current: 'currentColor',
primary: {
DEFAULT: '#4F9C3A',
900: '#25441c',
},
secondary: {
0: '#ff9563',
DEFAULT: '#E66437',
9: '#ae3409',
},
footer: {
light: '#e66437',
DEFAULT: '#383e42',
dark: '#26292c',
},
neutral: {
0: '#ffffff',
DEFAULT: '#ffffff',
1: '#fafafa',
9: '#000000',
},
accent: {
1: '#388ac5',
DEFAULT: '#293842',
},
brown: {
DEFAULT: '#C9AC75',
2: '#44261c',
},
black: '#000000',
}
}
更新:我已经能够查明问题的根源。我正在使用 gatsby-transformer-json 从 json 文件中获取要应用的类名。我有类似下面的代码段来设置在开发环境中工作但不在生产环境中的背景颜色。
<div className={`bg-${color}>
The development build shows proper background color for this segment but production build does not.
</div>

最佳答案

TLDR:
使用 purge 时不要在类名中使用字符串连接tailwind.config.js 中的选项。相反,提供 全类名 .
来源:https://tailwindcss.com/docs/optimizing-for-production

2021 年 3 月 1 日更新

感谢@robotu 为桌面带来另一个不错的选择:您可以添加 safelist您的 tailwind.config.js 的选项文件,像这样:

module.exports = {
// ...
purge: {
content: ['./src/**/*.html'],
safelist: ['bg-primary', 'bg-secondary']
}
}

原始操作代码/意图
你已经这样做了: <div className={`bg-${color}`>但是 TailwindCSS 更喜欢这样的东西: <div className={ color === "red" ? "bg-red" : "bg-blue" }>我的猜测是,如果您有多种可能的颜色,您可能可以使用返回完整类名的函数/钩子(Hook),但我还没有测试过。

更长的版本:
您没有向我们展示您的完整 tailwind.config.js 文件,但我假设您使用的是 purge选项在那里的某个地方。
继续 Ferran 的回答:我想说真正的问题是 PurgeCSS,当您包含 purge 时,Tailwind 在构建过程中在幕后使用它的方式。配置中的选项,确定在构建过程中要清除的类。
它查找与正则表达式匹配的任何字符串:
/[^<>"'`\s]*[^<>"'`\s:]/g
这将天真地找到几乎所有东西,只在特定的语法符号处停止。然后它将尝试保留每个匹配项,并清除其余匹配项。所以它会找到 bg-color ,保留它们,但会清除 bg-color因为 PurgeCSS 的正则表达式没有找到。
来自 TailwindCSS 文档:

That means that it is important to avoid dynamically creating class strings in your templates with string concatenation, otherwise PurgeCSS won't know to preserve those classes.

关于Gatsby 动态样式在生产版本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65960909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com