安装和配置 TanStack Start。
注意: 本指南适用于 TanStack Start 和 Tailwind v4。如果您使用的是 Tailwind v3,请考虑使用 Basic Starter 模板。TanStack Start 与 shadcn 的 canary 版本兼容。
TanStack Start + Tailwind v4
创建项目
首先,通过遵循 TanStack Start 网站上的 从零构建项目 指南来创建一个新的 TanStack Start 项目。
添加 Tailwind
安装 tailwindcss 及其依赖项。
pnpmnpmyarnbun
pnpm add tailwindcss @tailwindcss/postcss postcss
创建 postcss.config.ts
在项目根目录下创建一个 postcss.config.ts 文件。
postcss.config.ts
export default {plugins: {"@tailwindcss/postcss": {},},}
创建 app/styles/app.css
在 app/styles 目录下创建一个 app.css 文件,并导入 tailwindcss。
app/styles/app.css
@import "tailwindcss" source("../");
导入 app.css
app/routes/__root.tsx
import type { ReactNode } from "react"import { Outlet, createRootRoute } from "@tanstack/react-router"import { Meta, Scripts } from "@tanstack/start"import appCss from "@/styles/app.css?url"export const Route = createRootRoute({head: () => ({meta: [{charSet: "utf-8",},{name: "viewport",content: "width=device-width, initial-scale=1",},{title: "TanStack Start Starter",},],links: [{rel: "stylesheet",href: appCss,},],}),component: RootComponent,})
编辑 tsconfig.json 文件
向 tsconfig.json 文件中添加以下代码来解析路径。
tsconfig.json
{"compilerOptions": {"jsx": "react-jsx","moduleResolution": "Bundler","module": "ESNext","target": "ES2022","skipLibCheck": true,"strictNullChecks": true,"baseUrl": ".","paths": {"@/*": ["./app/*"]}}}
运行 CLI
运行 shadcn 初始化命令来设置项目:
pnpmnpmyarnbun
pnpm dlx shadcn@canary init -d
这将会在项目根目录创建一个 components.json 文件,并在 app/styles/app.css 中配置 CSS 变量。
就这样
现在,您可以开始向项目中添加组件。
pnpmnpmyarnbun
pnpm dlx shadcn@canary add button
上述命令将会把 Button 组件添加到项目中。然后,您可以像这样导入它:
app/routes/index.tsx
import { Button } from "@/components/ui/button"function Home() {const router = useRouter()const state = Route.useLoaderData()return (<div><Button>Click me</Button></div>)}
Basic Starter
Basic Starter 模板已经配置了 Tailwind v3。
运行 CLI
运行 shadcn 初始化命令来设置项目:
pnpmnpmyarnbun
pnpm dlx shadcn@canary init -d
这将会在项目根目录创建一个 components.json 文件,并在 app/styles/app.css 中配置 CSS 变量。
就这样
现在,您可以开始向项目中添加组件。
pnpmnpmyarnbun
pnpm dlx shadcn@canary add button
上述命令将会把 Button 组件添加到项目中。然后,您可以像这样导入它:
app/routes/index.tsx
import { Button } from "@/components/ui/button"function Home() {const router = useRouter()const state = Route.useLoaderData()return (<div><Button>Click me</Button></div>)}
