Back to Blog

UnoCSS 生态折腾笔记:从 DaisyUI 到 Una UI 的避坑指南

Nuxt
UnoCSS
DaisyUI
Una UI
Frontend

记录在 Nuxt 项目中尝试 UnoCSS 多种 UI 方案的真实体验:DaisyUI 的版本陷阱、Una UI 的依赖细节,以及对“折腾”与“生产”的思考。

Published on 12/18/2025

最近在构建 Indie Board 项目时,为了贯彻“激进 (Bleeding Edge)”和“轻量级”的技术原则,我放弃了成熟的 Tailwind CSS 方案,转而投向了 UnoCSS 的怀抱。

UnoCSS 本身非常棒,极致的轻量和快。但当你想在它上面找一个好用的 UI 组件库时,真正的“折腾”就开始了。

在这篇文章里,我总结了四种方案的现状,以及我踩过的坑。

1. DaisyUI + UnoCSS:版本的艺术

DaisyUI 是基于 Tailwind 的,想在 UnoCSS 里用,必须通过 Preset(预设)来“翻译”。

在尝试了多个版本和预设后,我得出了目前唯一稳健的组合:

npm install daisyui@4.12.24 @ameinhardt/unocss-preset-daisy

🕳️ 避坑要点:

  1. 版本锁定:必须用 DaisyUI 4.x。千万不要升级到 DaisyUI 5,因为它依赖 Tailwind 4 的新 API,目前的 UnoCSS 适配器还没跟上,会报 addVariant 错误。
  2. Preset 选择:虽然社区里推荐 kidonng 维护的版本,但在我的实测中,@ameinhardt/unocss-preset-daisy 配合 DaisyUI 4.12.24 才是能够正常工作、样式渲染正确的组合。

如果你非常喜欢 DaisyUI 的设计风格,这是目前在 UnoCSS 下最可行的方案。

2. Una UI:原生派的选择

折腾完“翻译”方案后,我把目光转向了 UnoCSS 的原生生态 —— Una UI

这是一个专为 Nuxt + UnoCSS 设计的组件库。它的体验非常丝滑,因为它不需要“翻译”,它本身就是用 UnoCSS 原子类写出来的。

💡 最佳实践:

在使用 Una UI 时,不需要再额外安装 @unocss/nuxt 或配置 uno.config.ts

npm install @una-ui/nuxt

原因:Una UI 的包内部已经集成了 UnoCSS 的依赖和配置。如果你手动再次引入 UnoCSS,不仅多余,还可能因为版本不一致导致冲突。

这是我最终在 Indie Board 项目中保留的方案,因为它最符合“轻量”和“社区主导”的原则。

3. 其他潜力股(未实测)

在调研过程中,我还发现了两个非常有意思的库,虽然这次没来得及深究,但值得关注:

  • @unifydev/unify-preset:这其实是 UnoCSS 世界里的“DaisyUI”。它复刻了 DaisyUI 的视觉风格,但完全是用 UnoCSS 引擎重写的。理论上比方案 1 更轻量,没有中间商赚差价。
  • Onu UI:另一个 UnoCSS 原生组件库,设计风格比较清爽,也是 Vue 生态的产物。

4. 总结:折腾 vs 生产

经过这一番从 Nuxt UI 到 DaisyUI 再到 Una UI 的反复横跳,我有一个很深的感悟。

这些方案适合什么时候用? 当你时间充裕、想要学习新技术、或者在做一个纯粹的 Side Project(比如我的 Indie Board)时。这种“折腾”非常有意思,能让你理解底层的构建逻辑和生态差异。

什么时候不要用? 如果你的项目有明确的 Deadline,或者是一个严肃的商业生产环境,请直接使用最主流的方案

  • Vue/Nuxt 生态:直接上 Nuxt UI (基于 Tailwind)
  • React/Next.js 生态:直接上 shadcn/uiNextUI

主流方案之所以主流,是因为无数人已经替你踩平了坑。而选择 Bleeding Edge,就意味着你必须做好随时由自己来修路(或者像我一样用 Git 分支疯狂回滚)的准备。


Happy Coding! 🚀