Skip to content

Commit c42140a

Browse files
committed
docs: 补充 uni_modules content 扫描排障说明
1 parent 0f033c1 commit c42140a

File tree

3 files changed

+133
-1
lines changed

3 files changed

+133
-1
lines changed

website/docs/issues/index.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,52 @@ keywords:
4949

5050
如何更改?在传入的配置项 `cssMatcher``htmlMatcher` 这类配置,来过滤指定目录或文件。
5151

52+
## uni-app + Tailwind CSS v3 扫描 `src/uni_modules` 后生成异常 CSS
53+
54+
### 问题现象
55+
56+
`tailwind.config` 使用下面这种过宽的 `content` 配置:
57+
58+
```ts
59+
content: ['./src/**/*.{html,js,ts,jsx,tsx,vue}']
60+
```
61+
62+
并且项目里存在 `src/uni_modules/**/*` 第三方包时,Tailwind 可能扫描到依赖源码中的正则片段或示例文本,例如 `[a-zA-Z:_]`,并把它当成 arbitrary property class 提取。
63+
64+
在小程序场景下,再经过 `weapp-tailwindcss` 转译后,最终可能出现类似:
65+
66+
```css
67+
._ba-zA-Z_c__B {
68+
a-z-a--z:;
69+
}
70+
```
71+
72+
这样的异常产物。
73+
74+
### 根因
75+
76+
这类问题的根因不是业务代码真的写了这个 class,而是 Tailwind v3 的内容提取器误扫了第三方目录中的源码、文档或构建产物。
77+
78+
### 推荐配置
79+
80+
请显式排除 `src/uni_modules`
81+
82+
```ts title="tailwind.config.ts"
83+
export default {
84+
content: [
85+
'./index.html',
86+
'./src/**/*.{html,js,ts,jsx,tsx,vue}',
87+
'!./src/uni_modules/**/*',
88+
],
89+
}
90+
```
91+
92+
### 最佳实践
93+
94+
- `content` 应尽量只覆盖业务源码目录
95+
- 默认应排除 `uni_modules``node_modules``dist``unpackage`、文档和生成产物
96+
- 如果必须扫描某个 `uni_modules` 包,应只精确包含其中真正承载模板类名的文件,而不是整个目录全量扫描
97+
5298
## 编译到 h5 / app 注意事项
5399

54100
有些用户通过 `uni-app` 等跨端框架,不止开发成各种小程序,也开发为 `H5`,然而 `tailwindcss` 本身就兼容 `H5` 了。此时你需要更改配置,我们以 `uni-app` 为例:

website/docs/quick-start/frameworks/uni-app-vite.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,42 @@ export default defineConfig({
5353

5454
这里只列举了插件的注册,包括`postcss`配置完整的注册方式,参考配置项文件链接: <https://github.com/sonofmagic/uni-app-vite-vue3-tailwind-vscode-template>
5555

56+
## `tailwind.config` 扫描范围提醒
57+
58+
### 问题现象
59+
60+
如果你的 `uni-app` 项目把第三方插件或依赖放进了 `src/uni_modules`,同时又在 `tailwind.config` 中直接扫描整个 `src/**/*.{html,js,ts,jsx,tsx,vue}`,Tailwind v3 可能会把依赖源码里的正则表达式、README 示例文本误识别为 class,最终生成异常 CSS。
61+
62+
在小程序产物中,可能会看到类似:
63+
64+
```css
65+
._ba-zA-Z_c__B {
66+
a-z-a--z:;
67+
}
68+
```
69+
70+
### 根因
71+
72+
这不是业务代码真的写了这样的类名,而是 Tailwind v3 的内容提取器误扫了 `src/uni_modules` 里的第三方源码或文档。
73+
74+
### 推荐配置
75+
76+
```ts title="tailwind.config.ts"
77+
export default {
78+
content: [
79+
'./index.html',
80+
'./src/**/*.{html,js,ts,jsx,tsx,vue}',
81+
'!./src/uni_modules/**/*',
82+
],
83+
}
84+
```
85+
86+
### 最佳实践
87+
88+
- `content` 只扫业务源码,不要无差别扫整个 `src`
89+
- 默认排除 `uni_modules``node_modules``dist``unpackage`
90+
- 如果必须包含某个 `uni_modules` 包,只精确包含其中真正承载模板类名的文件
91+
5692
## 创建项目参考
5793

5894
`uni-app vite` 版本是 `uni-app` 最新的升级,它使用 `vue3` 的语法。

website/docs/quick-start/install.mdx

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ module.exports = {
7676
module.exports = {
7777
// 这里给出了一份 uni-app /taro 通用示例,具体要根据你自己项目的目录结构进行配置
7878
// 不在 content 包括的文件内,你编写的 class,是不会生成对应的css工具类的
79-
content: ['./public/index.html', './src/**/*.{html,js,ts,jsx,tsx,vue}'],
79+
content: [
80+
'./public/index.html',
81+
'./src/**/*.{html,js,ts,jsx,tsx,vue}',
82+
'!./src/uni_modules/**/*',
83+
],
8084
// 其他配置项
8185
// ...
8286
corePlugins: {
@@ -86,6 +90,52 @@ module.exports = {
8690
}
8791
```
8892

93+
### `content` 扫描范围排障
94+
95+
#### 问题现象
96+
97+
`uni-app + tailwindcss@3` 场景下,如果项目把第三方插件或依赖放在 `src/uni_modules` 下,同时 `tailwind.config.js` 里使用了这类过宽配置:
98+
99+
```js
100+
content: ['./src/**/*.{html,js,ts,jsx,tsx,vue}']
101+
```
102+
103+
Tailwind 可能会扫描到依赖源码中的正则片段、README 示例文本或构建产物,例如 `[a-zA-Z:_]`,并把它误识别成 arbitrary property class。到了小程序产物阶段,再经过 `weapp-tailwindcss` 转译后,可能出现类似:
104+
105+
```css
106+
._ba-zA-Z_c__B {
107+
a-z-a--z:;
108+
}
109+
```
110+
111+
这样的异常 CSS。
112+
113+
#### 根因
114+
115+
根因不是业务代码真的写了这个 class,而是 `tailwindcss@3` 默认内容提取器误扫了第三方目录中的源码、文档或构建产物。
116+
117+
#### 推荐配置
118+
119+
对于 `uni-app + tailwindcss@3`,请显式排除 `src/uni_modules`
120+
121+
```ts title="tailwind.config.ts"
122+
export default {
123+
content: [
124+
'./index.html',
125+
'./src/**/*.{html,js,ts,jsx,tsx,vue}',
126+
'!./src/uni_modules/**/*',
127+
],
128+
}
129+
```
130+
131+
如果你使用的是 `tailwind.config.js`,同样保持这三段含义不变即可。
132+
133+
#### 最佳实践
134+
135+
- `content` 应尽量只覆盖业务源码目录
136+
- 默认应排除 `uni_modules``node_modules``dist``unpackage`、文档和生成产物
137+
- 如果必须扫描某个 `uni_modules` 包,应只精确包含其中真正承载模板类名的文件,而不是整个目录全量扫描
138+
89139
## 4. 引入 `tailwindcss`
90140

91141
在你的项目入口引入 `tailwindcss` 使它在小程序全局生效

0 commit comments

Comments
 (0)