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

相关推荐
不好听6137 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus7 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子8 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech8 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn9 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧10 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
qetfw12 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
甲维斯12 小时前
我要开始吹牛逼了!Kimi K3 “宇宙无敌”!
前端·人工智能
a11177612 小时前
微光小屋-前端养成小游戏 开源项目
前端