讨论

技术栈分析与Cursor规则生成器

来自 Wikiprompt,自由的提示词百科全书

Dan ⚡️

2025年6月23日

技术栈分析与Cursor规则生成器 分析项目依赖并生成一份全面的cursor规则文件,记录技术栈、版本和最佳实践。

提示词内容收藏

🌐
=================== --- description: 本规则概述了项目的技术栈、依赖版本及最佳实践,适用于所有文件。 globs: alwaysApply: true --- # 页面UI技术栈与依赖指南 ## 项目概览 **页面UI** 是一个基于现代React/Next.js技术栈的落地页组件库,包含: - **网站**:Next.js 14文档站点,包含组件演示 - **CLI工具**:`@page-ui/wizard`,用于快速初始化项目 - **组件**:基于Radix UI和Tailwind CSS的可复制粘贴React组件 ## 核心框架技术栈 ### **Next.js 14.2.24**(App Router) - **框架**:React元框架,采用App Router架构 - **使用特性**:API路由、SSG/SSR、OG图像生成、包分析 - **最佳实践**:使用App Router模式,避免使用pages目录 ### **React 18.2.0** - **UI库**:核心React库,支持并发特性 - **特性**:Suspense、自动批处理、服务端组件 - **最佳实践**:使用React 18模式 ### **TypeScript 5.1.3** - **配置**:启用严格模式以获得更好的类型安全性 - **最佳实践**:使用现代TypeScript版本 ## UI组件系统 ### **Radix UI原语**(v1.x系列) 完整的无障碍优先组件库生态系统: **最佳实践**: - 使用复合组件模式 - 始终使用Tailwind类进行自定义,而非内联样式 - 实现正确的ARIA属性(内置) - 包装在自定义组件中以实现一致的样式 ### **Shadcn/UI设计模式** - **位置**:`/components/shared/ui/`目录 - **理念**:复制粘贴组件,而非NPM依赖 - **样式**:Tailwind CSS + CSS变量用于主题化 - **变体**:使用`class-variance-authority`实现类型安全的变体 ## 样式与设计系统 ### **Tailwind CSS 3.3.3** + 生态系统 ```json { "tailwindcss": "^3.3.3", "@tailwindcss/forms": "^0.5.4", "@tailwindcss/typography": "^0.5.9", "tailwindcss-animate": "^1.0.7", "tailwind-merge": "^1.14.0" } ``` **最佳实践**: - 使用`tailwind-merge`处理条件类:`cn(baseClasses, conditionalClasses)` - 利用CSS变量进行主题化:`hsl(var(--primary))` - 使用插件处理表单和排版 - 实施一致的间距和颜色系统 ### **动画库** - **Framer Motion 10.16.4**:复杂动画、页面过渡 - **Tailwind Animate**:简单CSS动画 - **最佳实践**:简单效果使用CSS动画,复杂交互使用Framer Motion ```typescript // Framer Motion最佳实践: import { motion, AnimatePresence } from 'framer-motion' function AnimatedComponent() { return ( <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: -20 }} transition={{ duration: 0.3 }} > 内容 </motion.div> ) } ``` ## 状态管理与表单 ### **Zustand 4.5.2**(全局状态) - **理念**:极简、非固执己见的状态管理 - **用途**:主题偏好、全局UI状态、组件游乐场状态 - **最佳实践**:创建带正确选择器的类型化存储 ```typescript interface ThemeState { theme: 'light' | 'dark' setTheme: (theme: 'light' | 'dark') => void } export const useThemeStore = create<ThemeState>((set) => ({ theme: 'light', setTheme: (theme) => set({ theme }), })) ``` ### **React Hook Form 7.46.2** + 验证 - **表单库**:高性能、非受控表单 - **验证**:`@hookform/resolvers` ^3.3.1 + `zod` ^3.22.2 - **集成**:与Radix UI表单组件无缝协作 ```typescript // 最佳实践表单设置: const formSchema = z.object({ email: z.string().email(), name: z.string().min(2), }) function ContactForm() { const form = useForm<z.infer<typeof formSchema>>({ resolver: zodResolver(formSchema), }) return <form onSubmit={form.handleSubmit(onSubmit)}>...</form> } ``` ### **Zod 3.22.2**(模式验证) - **用途**:表单验证、API响应验证、类型生成 - **最佳实践**:在靠近使用处定义模式,利用类型推断 ## 内容管理系统 ### **自定义Contentlayer实现** ```json { "@shipixen/next-contentlayer-module": "1.0.2", "shipixen-contentlayer": "1.0.2", "@shipixen/pliny": "1.0.13" } ``` **特性**: - 类型安全的MDX处理 - Frontmatter解析 - 自动化内容导入 - RSS源生成 ### **MDX处理管道** **Remark插件**(Markdown处理): - `remark-gfm` ^3.0.1:GitHub风格Markdown - `remark-math` ^5.1.1:数学表达式 **Rehype插件**(HTML处理): - `rehype-slug` ^5.1.0:自动生成标题ID - `rehype-autolink-headings` ^6.1.0:自动链接标题 - `rehype-prism-plus` ^1.6.1:语法高亮 - `rehype-katex` ^6.0.3:数学渲染 **最佳实践**: - 在构建时处理内容,而非运行时 - 使用一致的插件版本以确保稳定构建 - 使用生成类型进行类型安全的内容查询 ## 开发体验 ### **代码质量工具** ```json { "eslint": "^8.45.0", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", "eslint-config-next": "^14.2.24", "eslint-config-prettier": "^8.8.0", "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.4.1" } ``` **Git工作流**: - **Husky 8.0.0**:Git钩子自动化 - **lint-staged 13.0.0**:预提交时进行代码检查和格式化 ### **交互式开发工具** - **Monaco Editor 0.45.0**:用于组件游乐场的浏览器内代码编辑 - **命令面板**:`cmdk` ^0.2.0,用于全局搜索和导航 - **包分析器**:`@next/bundle-analyzer`,用于性能监控 ## CLI工具(@page-ui/wizard) ### **包配置** ```json { "name": "@page-ui/wizard", "type": "module", "bin": "./packages/cli/index.mjs", "engines": { "node": ">=14.17.0" } } ``` ### **CLI依赖** ```json { "chalk": "^5.3.0", // 终端颜色和样式 "commander": "^12.0.0", // 命令行界面框架 "enquirer": "^2.4.1", // 交互式CLI提示 "ora": "^8.0.1" // CLI加载动画 } ``` **最佳实践**: - 使用ESM模块(`.mjs`扩展名) - 使用enquirer提供交互式提示 - 使用ora显示加载动画 - 使用chalk保持终端样式一致 ## 分析与外部服务 ### **Vercel生态系统** - **分析**:`@vercel/analytics` ^1.1.1 - **OG图像**:`@vercel/og` ^0.5.20 - **最佳实践**:使用Vercel原生工具以获得最佳性能 ### **产品分析** - **PostHog 1.130.1**:功能标志、用户跟踪、A/B测试 - **最佳实践**:隐私合规设置,并正确管理用户同意 ### **HTTP客户端** - **Axios 1.7.7**:API调用、新闻通讯订阅 - **最佳实践**:创建带基础配置的axios实例 ## 工具库 ### **日期与时间** - **date-fns 2.30.0**:模块化日期工具库 - **最佳实践**:仅导入所需函数以实现树摇优化 ```typescript // 好:可树摇的导入 import { format, parseISO } from 'date-fns' // 差:完整库导入 import * as dateFns from 'date-fns' ``` ### **样式与UI工具** - **clsx 2.0.0**:条件className工具 - **class-variance-authority 0.7.0**:类型安全的组件变体 - **chroma-js 2.4.2**:颜色操作和主题生成 ### **数据展示** - **@tanstack/react-table 8.10.7**:强大的表格组件 - **lucide-react 0.400.0**:图标库 - **sonner 1.3.1**:Toast通知

登录以查看完整提示词

继续使用:

登录即表示你同意我们的 使用条款 和 隐私政策

用法

此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。

为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。

参考资料

分类:coding| twitter| tech-stack| cursor-rules

讨论