Skip to content

使用shadcn-ui进行开发

shadcn-ui是一款设计十分简洁漂亮的组件方案,它并不像elementui、antdesign那样提供一套完整的组件库整合方案。

shadcn-ui仅仅将你需要的组件初始化在项目代码中,你完全可以根据需求去定制每一个组件,组件样式的定制不再那么困难,简洁党的福音来了~

安装tailwindcss以及它的依赖

bash
pnpm install -D tailwindcss postcss autoprefixer

初始化tailwincsss

bash
npx tailwindcss init -p

tsconfig.json新增路径解析规则

json
{
  "compilerOptions": {
    // ...
    "baseUrl": ".",
    "paths": {
      "@/*": [
        "./src/*"
      ]
    }
    // ...
  }
}

vite配置路径别名

安装@types/node:

bash
pnpm i -D @types/node

编辑vite.config.ts:

ts
import path from "path"
import react from "@vitejs/plugin-react"
import { defineConfig } from "vite"
 
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
  },
})

初始化shadcn-ui

bash
npx shadcn-ui@latest init

一些引导配置:

Would you like to use TypeScript (recommended)? 

yes

Which style would you like to use? › 

Default

Which color would you like to use as base color? › 

Slate

Where is your global CSS file? › › 

src/index.css

Do you want to use CSS variables for colors? › 

yes

Where is your tailwind.config.js located? › 

tailwind.config.js

Configure the import alias for components: › 

@/components

Configure the import alias for utils: › 

@/lib/utils

Are you using React Server Components? › 

no

添加一个按钮进行测试

bash
npx shadcn-ui@latest add button
tsx
import { Button } from "@/components/ui/button"

export default function Home() {
  return (
    <div>
      <Button>你好!</Button>
    </div>
  )
}

一些坑

在执行npx shadcn-ui@latest add xxx添加组件的时候要确保能够有较好的网络连接~