Skip to content

Commit 767394b

Browse files
committed
chore(deps): upgrade
1 parent e5e2a6f commit 767394b

1 file changed

Lines changed: 218 additions & 0 deletions

File tree

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
# weapp-tailwindcss 已支持 uni-app x 多端构建
2+
3+
## 前言
4+
5+
[`uni-app x`](https://doc.dcloud.net.cn/uni-app-x/) 是一个非常强大的跨多端解决方案,可以说是国内跨平台编译技术的天花板了。
6+
7+
最近,我很荣幸在 `weapp-tailwindcss@4.2.x` 版本中,适配了 `uni-app x` 的多端构建。
8+
9+
并借助 `uni-app x` 的能力,把 `tailwindcss` 原子化样式方案,同时带入到 `Web`,`小程序`, `安卓`,`IOS`, `鸿蒙` 等多端开发中!
10+
11+
## 如何使用
12+
13+
### 0. 创建项目
14+
15+
使用最新版本 `Hbuilderx` 创建一个 `uni-app x` 项目,然后执行
16+
17+
```bash npm2yarn
18+
npm init -y
19+
```
20+
21+
初始化一个 `package.json` 文件 (当然你也可以手动创建)
22+
23+
### 1. [安装并引入 tailwindcss3](/docs/quick-start/install)
24+
25+
26+
```bash npm2yarn
27+
# 安装 tailwindcss@3 版本的依赖
28+
npm i -D tailwindcss@3 postcss autoprefixer
29+
```
30+
31+
```bash npm2yarn
32+
# 初始化一个 tailwind.config.js 文件
33+
npx tailwindcss init
34+
```
35+
36+
然后,在你的根目录中的 `App.uvue` 中引入 `tailwindcss` 使它在应用全局生效
37+
38+
```html title="App.uvue"
39+
<style>
40+
@tailwind base;
41+
@tailwind components;
42+
@tailwind utilities;
43+
</style>
44+
```
45+
46+
### 2. [安装 weapp-tailwindcss](/docs/quick-start/this-plugin)
47+
48+
在项目目录下,执行:
49+
50+
```bash npm2yarn
51+
npm i -D weapp-tailwindcss
52+
```
53+
54+
然后把下列脚本,添加进你的 `package.json``scripts` 字段里:
55+
56+
```json title="package.json"
57+
"scripts": {
58+
// highlight-next-line
59+
"postinstall": "weapp-tw patch"
60+
}
61+
```
62+
63+
想知道原因的同学可以查看 [**这个链接**](https://tw.icebreaker.top/docs/quick-start/this-plugin)
64+
65+
### 3. [uni-app-x 注册 weapp-tailwindcss](/docs/quick-start/frameworks/uni-app-x)
66+
67+
#### 0. 创建工具类
68+
69+
在项目中创建 `shared.js` 文件,用于存放一些工具函数:
70+
71+
```js title="shared.js"
72+
const path = require('node:path')
73+
74+
function r(...args) {
75+
return path.resolve(__dirname, ...args)
76+
}
77+
78+
module.exports = {
79+
r,
80+
}
81+
```
82+
83+
#### 1. 注册插件
84+
85+
创建 `vite.config.ts` 文件,注册插件:
86+
87+
> 这里特别注意 `uniAppX` 是从 `weapp-tailwindcss/presets` 这个预设中导出的
88+
89+
```js title="vite.config.ts"
90+
import { defineConfig } from 'vite';
91+
import uni from '@dcloudio/vite-plugin-uni';
92+
import { UnifiedViteWeappTailwindcssPlugin } from 'weapp-tailwindcss/vite'
93+
import { r } from './shared'
94+
import { uniAppX } from 'weapp-tailwindcss/presets'
95+
import tailwindcss from 'tailwindcss'
96+
97+
export default defineConfig({
98+
plugins: [
99+
uni(),
100+
UnifiedViteWeappTailwindcssPlugin(
101+
uniAppX({
102+
base: __dirname,
103+
rem2rpx: true,
104+
}),
105+
),
106+
],
107+
css: {
108+
postcss: {
109+
plugins: [
110+
tailwindcss({
111+
config: r('./tailwind.config.js'),
112+
}),
113+
]
114+
}
115+
}
116+
});
117+
```
118+
119+
#### 2. 更改 tailwindcss 配置
120+
121+
使用绝对路径,包括所有的提取文件
122+
123+
```js title="tailwind.config.js"
124+
const { r } = require('./shared')
125+
126+
/** @type {import('tailwindcss').Config} */
127+
module.exports = {
128+
content: [
129+
r('./pages/**/*.{uts,uvue}'),
130+
r('./components/**/*.{uts,uvue}')
131+
],
132+
corePlugins: {
133+
preflight: false,
134+
},
135+
}
136+
137+
```
138+
139+
假如你需要从更多的目录中提取 `CSS Token`,你需要添加更多的 `glob` 表达式在 `content` 配置中。
140+
141+
---
142+
143+
在完成这 3 步之后, `uni-app x` 就集成 `tailwindcss` 原子化样式解决方案。
144+
145+
## 如何开发
146+
147+
目前 `uni-app x` 并没有提供任何 `cli` 的方式去使用它,所以目前我们使用 `Hbuilderx` 去进行开发和构建的。
148+
149+
这里可以使用 `Hbuilderx` 的运行,来运行到各个平台。
150+
151+
### 优先使用安卓进行开发
152+
153+
一般来说,`CSS` 平台的兼容程度,是 `Web` > `小程序` > `App`(安卓/IOS/鸿蒙)
154+
155+
所以,假如你有跨多端的需求,建议你一开始使用 `安卓模拟器` 来进行开发和调试,这是综合考虑下来 **成本最低** 的方案。
156+
157+
#### 🧐为什么?
158+
159+
因为 `uni-app x` 开发原生 `app` 是有一些限制的,
160+
161+
1. 比如文字必须包括在 `<text>` 标签中,文字的样式(比如 `text-2xl text-center text-red-400`) 也必须设置在这个元素上,设置在 `<view>` 上是没有效果的。而 `Web``小程序` 都是兼容的。
162+
163+
2. 还有很多 `css` 的样式,目前 `uni-app x` 暂时是不兼容的,强行使用 `Hbuilderx` 的控制台会爆出警告,要求你进行更改。
164+
165+
这就相当于,你写的代码,能够满足了 `安卓` 这一端,那就大概率能满足 `小程序` 端,甚至 `Web` 端了(当然实战中还需要很多条件编译处理)
166+
167+
#### 🧐为什么不是 IOS 或者鸿蒙?
168+
169+
IOS 模拟器,需要你有 Mac 才能运行,IOS 调试需要你有苹果手机,考虑到大部分开发应该都是用的 Windows 机器,所以选择 Android 模拟器开发,相对成本低一些,你都有的话当我没说
170+
171+
至于鸿蒙,uni-app x 官方文档上都写着:
172+
173+
> 鸿蒙整体处于发展初期,能用,有坑,大部分坑有规避方案。但开发者应建议其领导、客户、质量部门降低期望,不能严格比照Android和iOS的验收标准要求鸿蒙。
174+
175+
不如安卓/IOS 稳定的话,自然优先选择安卓平台
176+
177+
## 常见问题
178+
179+
### Vscode uvue/uts 代码染色
180+
181+
安装 `DCloud` 自己推出的 `uni-app x语言服务`, 插件市场一搜 `uni-app x` 就搜到了
182+
- ID: dcloud-ide.hbuilderx-language-services
183+
- 说明: 支持uni-app x项目的代码提示、悬浮、转到定义、查找引用、大纲、校验等
184+
- 发布者: DCloud
185+
- VS Marketplace 链接: https://marketplace.visualstudio.com/items?itemName=dcloud-ide.hbuilderx-language-services
186+
187+
### Tailwindcss 智能提示
188+
189+
目前 `Tailwindcss` 智能提示最好的还是 `vscode`,但是 `vscode Tailwindcss` 肯定是不认识 `uvue/uts` 文件的,
190+
191+
要让插件认识,只需要在你的项目中添加 `.vscode/settings.json` 文件
192+
193+
```json
194+
{
195+
"tailwindCSS.includeLanguages": {
196+
"uvue": "html",
197+
"uts": "javascript"
198+
}
199+
}
200+
```
201+
202+
当然,你直接全局修改你的 `vscode Tailwindcss` 插件配置肯定也是可以的。
203+
204+
## 配置好的模板
205+
206+
https://github.com/icebreaker-template/uni-app-x-hbuilderx
207+
208+
使用方式见这个项目中的 `README.md`
209+
210+
## 结尾
211+
212+
## 参考文档
213+
214+
[uni-app x 官方文档](https://doc.dcloud.net.cn/uni-app-x/)
215+
216+
[weapp-tailwindcss官网](https://tw.icebreaker.top/)
217+
218+
[weapp-tailwindcss 的 uni-app x 专题](https://tw.icebreaker.top/docs/uni-app-x)

0 commit comments

Comments
 (0)