首页
/ 在 Qwik 项目中集成 Tailwind CSS 与 daisyUI:完整安装实战指南

在 Qwik 项目中集成 Tailwind CSS 与 daisyUI:完整安装实战指南

2026-09-09 13:54:09作者:温艾琴Wonderful

daisyUI 作为开源的 Tailwind CSS 组件库(当前仓库 packages/daisyui/package.json 中的版本为 5.7.27),可通过 CSS 插件形式与任意 Vite 驱动的框架配合使用。本文以 Qwik 项目为例,完整讲解从创建项目、安装依赖、配置 Vite 到在组件中落地使用 daisyUI 类名的全过程,并深入解析 @plugin "daisyui" 背后的插件加载机制与默认配置,帮助你在 Qwik 应用中快速获得一套开箱即用的组件样式体系。读完本文,你将掌握 Qwik + Tailwind CSS v4 + daisyUI 三者的标准接线方式,以及安装后的主题、按需裁剪等配置能力。

安装前准备:环境要求

在开始之前,请确认本机满足以下条件:

  • Node.js 与 npm:Qwik 项目脚手架与依赖安装均依赖 npm,建议使用较新的 Node.js LTS 版本;
  • 网络可达 npm registry:需要拉取 tailwindcss@tailwindcss/vitedaisyui 三个包;
  • 了解项目根目录概念:以下命令默认在当前目录下创建/初始化 Qwik 项目。

daisyUI 5 以 Tailwind CSS v4 的 CSS 插件形式分发(配置入口见 packages/daisyui/index.js),因此本安装流程统一使用 tailwindcss@latest@tailwindcss/vite@latest,无需再编写传统的 tailwind.config.js

第一步:创建新的 Qwik 项目

在目标目录中执行以下命令,在当前目录下创建一个名为 empty 的 Qwik 起步模板项目:

npm create qwik@latest empty ./

命令说明:

  • empty:Qwik 官方提供的最简模板名,不包含多余示例代码,适合从零接入样式库;
  • ./:表示将项目直接创建在当前目录中。

执行过程中交互式向导会询问项目名称等选项,按提示确认即可。创建完成后,你会得到一个基于 Qwik City 路由框架的标准项目结构(包含 src/vite.config.tspackage.json 等核心文件)。

第二步:安装 Tailwind CSS 与 daisyUI

在项目根目录执行如下命令,一次性安装 Tailwind CSS 的 Vite 插件、Tailwind 核心以及 daisyUI:

npm install tailwindcss@latest @tailwindcss/vite@latest daisyui@latest

各依赖的职责划分:

依赖包 作用
tailwindcss Tailwind CSS v4 核心,提供 @import "tailwindcss" 入口与整套引擎
@tailwindcss/vite Tailwind CSS 官方 Vite 插件,在构建链路中编译样式
daisyui 组件样式库本体,通过 Tailwind v4 的 @plugin 指令注入

daisyUI 5 与 Tailwind CSS v4 是配套使用的:daisyUI 以“CSS 插件”形态注册进 Tailwind,官方文档中统一使用 @plugin "daisyui" 声明(见 安装指南目录/docs/install/) 下各框架页)。因此这里必须安装 @tailwindcss/vite(而不是 v3 时代的 postcss + 配置文件方案),版本跟随 @latest 即可与 daisyUI 保持兼容。

第三步:将 Tailwind CSS 接入 Vite 配置

Qwik 项目基于 Vite 构建,打开项目根目录的 vite.config.js(新模板中通常为 vite.config.ts,逻辑一致),导入 @tailwindcss/vite 插件并将其加入 plugins 数组:

import tailwindcss from "@tailwindcss/vite";
//...
export default defineConfig(({ command, mode }): UserConfig => {
  return {
    plugins: [tailwindcss(), qwikCity(), qwikVite(), tsconfigPaths()],
    // ...
  };
});

要点:

  • tailwindcss() 建议放在插件列表首位,确保样式编译先于路由与组件处理;
  • 原有 qwikCity()qwikVite()tsconfigPaths() 等 Qwik 必需的插件必须保留,仅做追加;
  • 修改 vite.config.* 后需要重启开发服务器(npm run dev)才能生效。

第四步:在 CSS 文件中引入 Tailwind CSS 与 daisyUI

在项目的全局样式文件(官方文档约定为 src/index.css;若你的模板使用 src/global.css 或其它文件名,将其在应用入口中正确引入即可)中写入以下两行:

@import "tailwindcss";
@plugin "daisyui";

同时,移除文件中原有的旧样式内容,避免与 daisyUI 默认样式冲突。完成以上四步后,即可在 Qwik 组件模板中直接书写 btncardnavbar 等 daisyUI 类名。

背后发生了什么:@plugin "daisyui" 的加载链路

这两行 CSS 指令是整套接入的核心,值得深入理解其底层机制。daisyUI 的包入口 packages/daisyui/index.js 导出了通过 packages/daisyui/functions/plugin.jsplugin.withOptions 包装的插件工厂:

  • Tailwind CSS v4 解析 @plugin "daisyui" 时,会加载 daisyui 包的默认导出(即上述插件工厂);
  • 插件工厂通过 pluginOptionsHandler(options, addBase, themesObject, version) 处理用户配置(源码见 packages/daisyui/functions/pluginOptionsHandler.js);
  • 随后分别调用 addBaseaddComponentsaddUtilities 注入基础样式、组件样式与工具类,并通过 shouldIncludeIteminclude / exclude 配置决定哪些模块生效;
  • 插件还会注册 is-drawer-openis-drawer-close 两个变体(见 index.js 末尾),支撑抽屉组件的状态样式。

也就是说,@plugin "daisyui" 一行的背后,是「基础变量 + 主题 + 数十个组件 + 工具类」的整套注入流程,这也是为什么只需要两行 CSS 就能获得全部组件能力。

第五步:在 Qwik 组件中使用 daisyUI 类名

安装完成后,直接在 Qwik 组件的 JSX/TSX 模板中使用类名即可,例如:

import { component$ } from "@builder.io/qwik";

export default component$(() => {
  return (
    <button class="btn btn-primary">主要按钮</button>
  );
});

常见的开箱即用能力包括:

  • 组件类名btncardnavbarmodalinputselect 等,具体清单对应源码目录 packages/daisyui/src/components/ 下的各组件样式文件;
  • 主题类名:通过 data-theme="..." 属性切换主题(如 data-theme="dark"),或使用 theme-controller 组件类实现运行时切换;
  • 工具类glassjoinradius 等,对应 packages/daisyui/src/utilities/

默认配置下,daisyUI 只启用 light(默认主题)与 dark(跟随系统深色偏好)两个主题——这是插件默认值 themes: light --default, dark --prefersdark 的效果(见 pluginOptionsHandler.js 第 9 行)。若组件未显示主题变量,属于预期行为,可在安装后按需配置主题。

安装后的可选配置:按需定制 daisyUI

daisyUI 的配置直接在 CSS 中通过 @plugin{} 块完成(完整说明见 Config 文档/docs/config/+page.md))。将分号 ; 替换为花括号并写入配置项即可:

@plugin "daisyui" {
  themes: light --default, dark --prefersdark;
  root: ":root";
  include: ;
  exclude: ;
  prefix: ;
  logs: true;
}

常用配置项速览:

配置项 默认值 说明
themes light --default, dark --prefersdark 启用的主题列表;false 关闭全部主题,all 启用全部;--default 标记默认主题,--prefersdark 标记深色模式默认主题
root ":root" 接收 CSS 变量的选择器,可改为 #my-app 实现作用域隔离(如 Web Component / Shadow DOM)
include 仅包含指定组件,例如 include: button, input, select;
exclude 排除指定模块,例如 exclude: rootscrollgutter;
prefix "" 类名前缀,例如 prefix: "d-"btn 变为 d-btn
logs true 是否在控制台输出 daisyUI 版本日志

例如,启用多个主题并按需裁剪组件:

@plugin "daisyui" {
  themes: nord --default, abyss --prefersdark, cupcake, dracula;
  include: button, input, select, card, navbar;
}

include / exclude 的取值对应 packages/daisyui/src/ 下的文件名(basecomponentsutilitiesthemes 各子目录),可用于减小最终产物体积或与其它组件库共存。

常见问题排查

1. 页面没有任何 daisyUI 样式

  • 确认 vite.config.js 中已加入 tailwindcss() 插件并重启了开发服务器;
  • 确认全局 CSS 文件(如 src/index.css)确实被应用入口(Qwik 的 root.tsx 或布局组件)引入;
  • 确认已删除旧样式,避免 @import 顺序或旧规则覆盖。

2. 类名书写正确但样式缺失

  • daisyUI 5 需要 Tailwind CSS v4,请确认 tailwindcss@tailwindcss/vite 均为最新版本,避免与 v3 时代产物混用;
  • 若使用了 prefix 配置,所有类名需同步加上前缀(如 d-btn)。

3. 控制台没有 daisyUI 版本日志

daisyUI 会在首次构建时打印带版本号的日志(见 pluginOptionsHandler.js 第 15-20 行),这是插件正常加载的标志;若配置了 logs: false 则不会输出,属正常现象。

4. 主题切换不生效

默认仅启用 lightdark 两个主题,如需其它主题(如 draculanord),需在 themes 配置中显式启用;运行时通过 data-theme 属性或 theme-controller 组件切换。

更多安装方式

Qwik 使用 Vite 构建,因此本指南的接线方式(@tailwindcss/vite + @plugin "daisyui")同样适用于其它 Vite 系框架,相关官方安装文档还包括:

  • Vite 通用安装指南/docs/install/vite/+page.md)
  • PostCSS 安装指南/docs/install/postcss/+page.md)
  • Tailwind CSS Standalone CLI 安装指南(免 Node.js)/docs/install/standalone/+page.md)
  • Next.js 安装指南/docs/install/nextjs/+page.md) 等框架专项文档

这些文档均围绕同一套核心机制展开:先接入 Tailwind CSS v4 构建链,再通过 @plugin "daisyui" 注入组件库,差异仅在于构建工具链的接入方式。

至此,你的 Qwik 项目已完成 Tailwind CSS 与 daisyUI 的完整接线,可以开始使用全套组件类名快速构建界面了。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.76 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
858
1.35 K
docsdocs
暂无描述
Markdown
899
5.82 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
923
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.83 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
532
596
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.03 K
524
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
393