Tailwind版本:v9.3.5
PostCSS配置:
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
...(process.env.NODE_ENV === 'production'
? {
'@fullhuman/postcss-purgecss': {
content: ['./components/**/*.js', './pages/**/*.js'],
defaultExtractor: content =>
content.match(/[\w-/:]+(?<!:)/g) || [],
},
}
: {}),
},
}
Tailwind Config:
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
tint: 'rgba(0,0,0,0.3)',
},
},
},
variants: {},
plugins: [],
}
样式在开发中可以完美地工作,但在生产中只能使用某些样式。在检查build文件夹中的CSS文件后,似乎某些CSS类没有被提取或清除,因此导致应用程序的部分样式化。
答案 0 :(得分:2)
发现了问题,postcss
配置丢失了内容数组中的sections文件夹,并且由于我的js文件具有jsx
,所以我也需要添加它。
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
...(process.env.NODE_ENV === 'production'
? {
'@fullhuman/postcss-purgecss': {
// added sections folder and changed extension to jsx
content: ['./components/**/*.jsx', './pages/**/*.js', './sections/**/**/*.jsx'],
defaultExtractor: content =>
content.match(/[\w-/:]+(?<!:)/g) || [],
},
}
: {}),
},
}
答案 1 :(得分:2)
当我将一些类的名称动态注入到我的html模板中时,我遇到了同样的问题。
我正在使用 nuxt.js / tailwindcss ,因此您需要先阅读该纪录片才能解决您的问题。
这是生成生产中缺少的类的代码
computed: {
axeY() {
return this.y < 0 ? `-translate-y${this.y}` + ' ' : `translate-y-1` + ' '
},
axeX() {
return this.x < 0 ? `-translate-x${this.x}` : `translate-x-${this.x}`
},
PostCSS会将所有文件分析到内容表中(在配置文件中声明),
注意我的文件不包含带有 translate 前缀的类
如您所见,我缺少的类是:[translate-x-1,-translate-x-1,translate-y-1,-translate-y-1] ...数字1是一个变量。
You can specify content that should be analyzed by PurgeCSS with an array of filenames
/*
** TailwindCSS Configuration File
**
** Docs: https://tailwindcss.com/docs/configuration
** Default: https://github.com/tailwindcss/tailwindcss/blob/master/stubs/defaultConfig.stub.js
*/
const num = [1, 2, 3, 4, 5, 6, 8, 10, 12]
const whitelist = []
num.map((x) => {
whitelist.push('translate-x-' + x)
whitelist.push('-translate-x-' + x)
whitelist.push('translate-y-' + x)
whitelist.push('-translate-y-' + x)
})
module.exports = {
future: {
removeDeprecatedGapUtilities: true,
},
theme: {},
variants: {
backgroundColor: ['hover', 'focus', 'active'],
},
plugins: [],
purge: {
// Learn more on https://tailwindcss.com/docs/controlling-file-size/#removing-unused-css
enabled: process.env.NODE_ENV === 'production',
content: [
'components/**/*.vue',
'layouts/**/*.vue',
'pages/**/*.vue',
'plugins/**/*.js',
'nuxt.config.js',
],
options: {
whitelist,
},
},
}
答案 2 :(得分:0)
我也遇到了同样的问题。 Tailwind will purge classes created with string concatenation。
一种解决方法是将类名保存为变量。
n = ‘row-start-2’;
className={n}
对于我的用例,我不能这样做。相反,我使用了 safelist greedy option。
在顺风配置文件中:
module.exports = {
purge: {
content: ["./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}"],
options: {
safelist: {
greedy: ["/safe$/"],
},
},
},
然后我将“安全”类添加到我使用字符串连接创建类的所有元素中。
className={`safe sm:grid-cols-${smCols} sm:grid-rows-${smRows} md:grid-cols-${mdCols} md:grid-rows-${mdRows}