关于 uniwind
Uniwind 是将 Tailwind CSS v4 引入 React Native 的样式工具,面向使用 React Native 的开发者。它在构建时编译样式,并让核心 React Native 组件直接支持 className。
主要功能
- 01将 Tailwind CSS v4 用于 React Native
- 02核心组件支持 className
- 03构建时编译样式
- 04通过 CSS 配置主题和变量
- 05支持原生 CSS 级联规则
适用场景
- 01为 React Native 组件编写实用类样式
- 02在应用中配置主题变量
- 03调整第三方组件的样式绑定
- 04排查样式优先级冲突
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ uni-stack/ uniwind --skill uniwind安装后在 Claude Code 中输入/uniwind确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/component-bindings.mdcss-and-utilities.mdintegrations.mdpro.mdsetup.mdstyling-patterns.mdtheming.mdtroubleshooting.mdvariants-and-selectors.md详细介绍
Uniwind
Uniwind 1.7.0+ / Uniwind Pro 1.2.1+ / Tailwind CSS v4 / React Native 0.81+ / Expo SDK 54+
如果用户使用的是更早的版本,建议升级到 1.7.0+(免费版)/ 1.2.1+(Pro),以获得最佳体验。
LayoutDirection 从 Uniwind 1.8.0+ 起可用。
ScopedVariables 可将 CSS 变量覆盖范围限定在组件子树中,从 Uniwind 1.11.0+ / Uniwind Pro 1.6.0+ 起可用。
从 Uniwind 1.13.0+ / Uniwind Pro 1.9.0+ 起,原生 CSS 层叠顺序(层、优先级、源代码顺序)会得到遵循。较早版本以不同方式处理互相冲突的自定义类和工具类。
Uniwind 将 Tailwind CSS v4 引入 React Native。所有核心 React Native 组件开箱即支持 className 属性。样式会在构建时编译,不会产生运行时开销。
关键规则
- 仅支持 Tailwind v4 — 使用
@import 'tailwindcss',不要使用@tailwind base。不支持 Tailwind v3。 - 绝不要动态构造 classNames — Tailwind 会在构建时扫描。
bg-${color}-500不会生效。请使用完整的字符串字面量、映射对象或三元表达式。 - 绝不要使用
cssInterop或remapProps— 这些是 NativeWind API。Uniwind 不会覆盖全局组件。 - 不要使用
tailwind.config.js— 所有配置都通过global.css中的@theme和@layer theme完成。 - 无需 ThemeProvider — 直接使用
Uniwind.setTheme()。 withUniwindConfig必须是 Metro 配置包装器的最外层。- 绝不要用
withUniwind包装react-native或react-native-reanimated组件 —View、Text、Pressable、Image、TextInput、ScrollView、FlatList、Switch、Modal、Animated.View、Animated.Text等组件已内置完整的className支持。用withUniwind包装它们会破坏功能。仅对第三方组件(例如expo-image、expo-blur、moti)使用withUniwind。 - 字体族:仅使用单个字体 — React Native 不支持回退字体。使用
--font-sans: 'Roboto-Regular',不要使用'Roboto', sans-serif。 - 所有主题变体必须定义相同的一组 CSS 变量 — 如果
light定义了--color-primary,那么dark和每个自定义主题也必须定义它。变量不匹配会导致运行时错误。 - 非样式颜色属性必须使用
accent-前缀 — 这一点至关重要。color(Button、ActivityIndicator)、tintColor(Image)、thumbColor(Switch)、placeholderTextColor(TextInput)等属性不属于style对象。你必须使用对应的{propName}ClassName属性,并为类名添加accent-前缀。例如:<ActivityIndicator colorClassName="accent-blue-500" />,而不是<ActivityIndicator className="text-blue-500" />。常规 Tailwind 颜色类(如text-blue-500)仅对className(它映射到style)生效。对于非样式颜色属性,始终使用accent-。 - rem 默认值为 16px — NativeWind 使用 14px。如果要迁移,请在 Metro 配置中设置
polyfills: { rem: 14 }。 cssEntryFile必须是相对路径字符串 — 使用'./global.css',不要使用path.resolve(__dirname, 'global.css')。- 原生端遵循 CSS 层叠规则(Uniwind 1.13.0+ / Pro 1.9.0+) — 冲突按浏览器中的规则解决:先看
!important,再看层叠层,然后是选择器优先级,最后是编译后 CSS 中的顺序。className内类名的顺序无关紧要。Tailwind 工具类位于@layer utilities中,因此对于普通(非!important)声明,无层叠层的自定义类(.card { border-radius: 12px })优先于rounded-2xl。若要让工具类覆盖自定义类,请在@layer components { ... }中声明自定义类。cn()/tailwind-merge只会对彼此重复的 Tailwind 工具类进行去重;它们不会移除card这样的自定义类。 - 支持重要工具类 — Tailwind 的重要修饰符可在 classNames 中使用,
!放在末尾:bg-red-500!、active:bg-red-500!、ios:pt-12!。前置!bg-red-500的写法已弃用。对于同一 style 属性,重要工具类会覆盖非重要工具类,但内联style仍会覆盖className。
参考资料路由
识别用户的任务后,只阅读 references/ 下相关的内置参考文件:
- 安装或配置问题:
references/setup.md - React Native 组件的 className 属性、强调色属性或组件示例:
references/component-bindings.md - 第三方组件、
withUniwind、动态类名、tailwind-variants、cn、重要工具类或样式优先级:references/styling-patterns.md - 主题、CSS 变量、
ScopedTheme、LayoutDirection、色彩空间或运行时变量 API:references/theming.md - 平台、数据、状态、响应式或安全区域工具类:
references/variants-and-selectors.md - CSS 函数、自定义 CSS、
@utility、@theme、字体或渐变:references/css-and-utilities.md - React Navigation、UI 工具包、支持矩阵或不支持的类:
references/integrations.md - Uniwind Pro 安装、动画、诊断、group 变体、默认样式、原生内边距或主题过渡:
references/pro.md - 样式失效、安装诊断、错误、缓存问题、常见问题、MCP 或相关技能:
references/troubleshooting.md
工作流程
- 判断用户需要的是安装、样式、主题、变体、集成、Pro 还是故障排查方面的帮助。
- 在提供详细指导或编辑代码之前,先阅读匹配的参考文件。
- 即使选定的参考文件中没有提及,也要遵守上述关键规则。
- 不要猜测 Uniwind API。如有疑问,请查阅官方文档:https://docs.uniwind.dev/llms-full.txt
相关技能
NativeWind 迁移与此技能有意分开。用户希望从 NativeWind 迁移到 Uniwind 时,请使用 migrate-nativewind-to-uniwind 技能。