在 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_陈寒19 分钟前
Python高手都在用的5个隐藏技巧,让你的代码效率提升50%
前端·人工智能·后端
lcc18733 分钟前
Vue3 ref函数和reactive函数
前端·vue.js
艾小码35 分钟前
还在为组件通信头疼?defineExpose让你彻底告别传值烦恼
前端·javascript·vue.js
gnip36 分钟前
docker总结
前端
槁***耿36 分钟前
TypeScript类型推断
前端·javascript·typescript
带只拖鞋去流浪38 分钟前
迎接2026,重新认识Vue CLI (v5.x)
前端·vue.js·webpack
c***V3234 小时前
Vue优化
前端·javascript·vue.js
李@十一₂⁰6 小时前
HTML 特殊字体符号
前端·html
小奶包他干奶奶8 小时前
Webpack学习——Loader(文件转换器)
前端·学习·webpack
zy happy8 小时前
若依 vue3 报错:找不到模块“@/api/xxxx/xxxxx”或其相应的类型声明。。Vue 3 can not find mod
前端·javascript·vue.js