在 Vue 3 + TS + Vite + TSX 项目中配置 UnoCSS

在 Vue 3 + TS + Vite + TSX 项目中配置 UnoCSS

以下是给你的 Vue 3 + TypeScript + Vite + TSX 项目添加 UnoCSS 支持的完整步骤:

1. 安装 UnoCSS 及其相关依赖

bash 复制代码
npm install -D unocss @unocss/reset @unocss/vite

2. 配置 vite.config.ts

修改你的 vite.config.ts 文件:

typescript 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import UnoCSS from 'unocss/vite'

export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    UnoCSS(), // 添加 UnoCSS 插件
  ],
})

3. 创建 UnoCSS 配置文件

在项目根目录创建 uno.config.ts 文件:

typescript 复制代码
import { defineConfig, presetAttributify, presetUno, presetIcons } from 'unocss'

export default defineConfig({
  presets: [
    presetUno(), // 默认预设
    presetAttributify(), // 属性化模式支持
    presetIcons(), // 图标支持(可选)
  ],
  // 自定义规则
  rules: [
    ['m-1', { margin: '0.25rem' }],
    // 添加你的自定义规则...
  ],
  // 快捷方式
  shortcuts: {
    'btn': 'py-2 px-4 font-semibold rounded-lg shadow-md',
    'btn-green': 'text-white bg-green-500 hover:bg-green-700',
    // 添加你的快捷方式...
  },
  // 主题
  theme: {
    colors: {
      primary: 'var(--color-primary)',
      secondary: 'var(--color-secondary)',
      // 添加你的主题颜色...
    },
    fontFamily: {
        // 添加字体
      JetBrains: 'JetBrains',

    },
  }
})

4. 添加 UnoCSS 重置样式

main.tsmain.js 中导入 UnoCSS 重置样式:

typescript 复制代码
import '@unocss/reset/tailwind.css' // 可以使用其他重置样式,如 normalize.css
import 'uno.css'

5. 配置 TSX 支持 UnoCSS(可不配置)

确保你的 tsconfig.json 包含以下配置:

json 复制代码
{
  "compilerOptions": {
    "types": ["unocss/types/global"]
  }
}

6. 在组件中使用 UnoCSS

.vue 文件中使用:

vue 复制代码
<template>
  <div class="p-4 bg-blue-500 text-white rounded">
    UnoCSS in Vue SFC
  </div>
</template>

.tsx 文件中使用:

typescript 复制代码
import { defineComponent } from 'vue'

export default defineComponent({
  setup() {
    return () => (
      <div class="p-4 bg-red-500 text-white rounded">
        UnoCSS in TSX
      </div>
    )
  }
})

7. 可选:配置 VS Code 智能提示

安装 VS Code 的 UnoCSS 扩展

或者在项目根目录创建 .vscode/settings.json

json 复制代码
{
  "unocss.root": ".",
  "unocss.include": [
    "**/*.vue",
    "**/*.ts",
    "**/*.tsx",
    "**/*.js",
    "**/*.jsx"
  ]
}

8. 运行项目

bash 复制代码
npm run dev

额外配置(按需选择)

图标支持

  1. 安装图标依赖:
bash 复制代码
npm install -D @iconify/json
  1. uno.config.ts 中配置:
typescript 复制代码
import presetIcons from '@unocss/preset-icons'

export default defineConfig({
  presets: [
    presetIcons({
      scale: 1.2,
      warn: true,
      // 其他选项...
    }),
    // 其他预设...
  ]
})

动画支持

bash 复制代码
npm install -D @unocss/preset-wind

然后在 uno.config.ts 中使用 presetWind 替代 presetUno

注意事项

  1. UnoCSS 的类名优先级可能与现有 CSS 冲突,可以通过调整 uno.config.ts 中的 layers 配置解决

  2. 生产构建时,UnoCSS 会自动提取使用的工具类,无需额外配置

  3. 如果遇到类名不生效的问题,检查文件是否被包含在扫描范围内

  4. 对于动态类名,可以使用 class 绑定或 class 属性(在 TSX 中)

现在你的项目已经完整支持 UnoCSS 了,可以在 Vue SFC 和 TSX 文件中使用原子化 CSS 工具类了!

相关推荐
leobertlan3 小时前
2025年终总结
前端·后端·程序员
子兮曰3 小时前
OpenClaw架构揭秘:178k stars的个人AI助手如何用Gateway模式统一控制12+通讯频道
前端·javascript·github
百锦再4 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
莲华君4 小时前
React快速上手:从零到项目实战
前端·reactjs教程
百锦再4 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
易安说AI4 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
失忆爆表症6 小时前
05_UI 组件库集成指南:Shadcn/ui + Tailwind CSS v4
前端·css·ui
小迷糊的学习记录6 小时前
Vuex 与 pinia
前端·javascript·vue.js
发现一只大呆瓜6 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
不爱吃糖的程序媛6 小时前
Flutter 与 OpenHarmony 通信:Flutter Channel 使用指南
前端·javascript·flutter