在 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 工具类了!

相关推荐
IT_陈寒3 小时前
Python开发者必知的5大性能陷阱:90%的人都踩过的坑!
前端·人工智能·后端
codingWhat3 小时前
介绍一个手势识别库——AlloyFinger
前端·javascript·vue.js
代码老中医3 小时前
2026年CSS彻底疯了:这6个新特性让我删掉了三分之一JS代码
前端
不会敲代码13 小时前
Zustand:轻量级状态管理,从入门到实践
前端·typescript
踩着两条虫3 小时前
VTJ.PRO 双向代码转换原理揭秘
前端·vue.js·人工智能
扉川川3 小时前
OpenClaw 架构解析:一个生产级 AI Agent 是如何设计的
前端·人工智能
远山枫谷3 小时前
一文理清页面/组件通信与 Store 全局状态管理
前端·微信小程序
codingWhat3 小时前
手撸一个「能打」的 React Table 组件
前端·javascript·react.js
HelloReader3 小时前
Tauri 应用安全从开发到发布的威胁防御指南
前端
bluceli3 小时前
WebAssembly实战指南:将高性能计算带入浏览器
前端·webassembly