本指南将帮助你搭建一个基于 Vite 的 React 项目,包含 TypeScript、Tailwind CSS 和 shadcn/ui 组件库的完整配置过程。
确保能够成功获取远程库:
# 设置 NPM 镜像
npm config set registry https://registry.npmmirror.com/
# 验证设置
npm config get registry
npm create vite@latest . -- --template react-ts
npm install
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
@tailwind base;
@tailwind components;
@tailwind utilities;
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
/* Path Aliases */
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
}
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from "path"
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
})
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
npx shadcn-ui@latest init
# 正确的安装命令
npx shadcn-ui@latest add button
npx shadcn-ui@latest add card
# 或者简写形式
npx shadcn add button
npx shadcn add card
# ❌ 错误示例
# npx shadcn-ui@latest add button
import { Button } from "./components/ui/button"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "./components/ui/card"
function App() {
return (
Welcome to Vite + React + Tailwind + shadcn/ui
Project Setup Complete!
Your project is now configured with TypeScript, Tailwind CSS, and shadcn/ui
)
}
export default App
npm run dev
# ❌ 错误命令
# npm start
设置 NPM 镜像可以加快依赖包的下载速度,特别是在中国大陆地区。使用 npmmirror 镜像可以显著提升安装效率。
安装完成后,你可以在 components/ui
目录下看到相应的组件文件。此外,你可以通过运行开发服务器并查看示例页面来验证组件是否正常工作。
Path Aliases(路径别名)可以简化导入语句,使代码更加清晰。使用 @/*
别名可以避免复杂的相对路径,例如 ../../../components
这样的导入方式。