From 2599766e3e0f513cf6e445bc6222092958482bea Mon Sep 17 00:00:00 2001 From: alger Date: Tue, 1 Apr 2025 23:25:19 +0800 Subject: [PATCH] feat: cursor rule --- .cursor/rules/music-vue-rule.mdc | 12 +-- .cursor/rules/project.mdc | 148 +++++++++++++++++++++++++++++++ 2 files changed, 155 insertions(+), 5 deletions(-) create mode 100644 .cursor/rules/project.mdc diff --git a/.cursor/rules/music-vue-rule.mdc b/.cursor/rules/music-vue-rule.mdc index 4dd9f3d..3f0d03f 100644 --- a/.cursor/rules/music-vue-rule.mdc +++ b/.cursor/rules/music-vue-rule.mdc @@ -6,9 +6,9 @@ alwaysApply: false 您是 TypeScript、Node.j、Vue3、Electron、naive-ui、VueUse 和 Tailwind 方面的专家。 项目结构 -- 这是 Electron 项目,使用 Vue3 和 Vuex 进行开发的第三方网易云音乐播放器。 -- 使用 Vue3 和 Vuex 进行开发。 -- 使用 Vuex 进行状态管理。 +- 这是 Electron 项目,使用 Vue3 和 Pinia 进行开发的第三方网易云音乐播放器。 +- 使用 Vue3 和 Pinia 进行开发。 +- 使用 Pinia 进行状态管理。 - 使用 VueUse 进行状态管理。 - 使用 naive-ui 进行 UI 设计。 - 使用 Tailwind 进行样式设计。 @@ -57,7 +57,7 @@ UI 和样式 关键约定 - 对常见可组合项和实用函数使用 VueUse。 -- 使用 Vuex 进行状态管理。 +- 使用 Pinia 进行状态管理。 - 优化 Web Vitals(LCP、CLS、FID)。 @@ -87,4 +87,6 @@ Electron 最佳实践 - 思考 5-7 种可能导致问题的来源,并根据可能性、对功能的影响以及在类似问题中的出现频率进行优先排序。仅考虑与错误日志、最近代码变更和系统约束相匹配的来源。忽略外部依赖,除非日志明确指向它们。 - 一旦缩小到 1-2 个最可能的来源,将其与历史错误日志、相关系统状态和预期行为进行交叉验证。如果发现不一致,调整你的假设。 - 在添加日志时,确保它们被策略性地放置,以便同时确认或排除多个潜在原因。如果日志不支持你的假设,请先提出替代的调试策略,再继续深入分析。 -- 在实施修复之前,先总结问题现象、经过验证的假设,以及预期的日志输出,以确认问题是否真正得到解决。 \ No newline at end of file +- 在实施修复之前,先总结问题现象、经过验证的假设,以及预期的日志输出,以确认问题是否真正得到解决。 + + diff --git a/.cursor/rules/project.mdc b/.cursor/rules/project.mdc new file mode 100644 index 0000000..6b44347 --- /dev/null +++ b/.cursor/rules/project.mdc @@ -0,0 +1,148 @@ +--- +description: 这个规则是项目结构 +globs: +alwaysApply: false +--- +# AlgerMusicPlayer 项目结构 + +AlgerMusicPlayer 是一个基于 Electron、Vue 3、TypeScript 开发的网易云音乐第三方播放器。 + +## 技术栈 + +- **前端框架**:Vue 3 + TypeScript +- **UI 组件库**:naive-ui +- **样式框架**:Tailwind CSS +- **图标库**:remixicon +- **状态管理**:Pinia +- **工具库**:VueUse +- **构建工具**:Vite, electron-vite +- **打包工具**:electron-builder +- **国际化**:vue-i18n +- **HTTP 客户端**:axios +- **本地存储**:electron-store localstorage +- **网易云音乐 API**:netease-cloud-music-api +- **音乐解锁**:@unblockneteasemusic/server + +## 项目结构 + +``` +AlgerMusicPlayer/ +├── build/ # 构建相关文件 +├── docs/ # 项目文档 +├── node_modules/ # 依赖包 +├── out/ # 构建输出目录 +├── resources/ # 资源文件 +├── src/ # 源代码 +│ ├── i18n/ # 国际化配置 +│ │ ├── lang/ # 语言包 +│ │ ├── main.ts # 主进程国际化入口 +│ │ └── renderer.ts # 渲染进程国际化入口 +│ ├── main/ # Electron 主进程 +│ │ ├── modules/ # 主进程模块 +│ │ ├── index.ts # 主进程入口 +│ │ ├── lyric.ts # 歌词处理 +│ │ ├── server.ts # 服务器 +│ │ ├── set.json # 设置 +│ │ └── unblockMusic.ts # 音乐解锁 +│ ├── preload/ # 预加载脚本 +│ │ ├── index.ts # 预加载脚本入口 +│ │ └── index.d.ts # 预加载脚本类型声明 +│ └── renderer/ # Vue 渲染进程 +│ ├── api/ # API 请求 +│ ├── assets/ # 静态资源 +│ ├── components/ # 组件 +│ │ ├── common/ # 通用组件 +│ │ ├── home/ # 首页组件 +│ │ ├── lyric/ # 歌词组件 +│ │ ├── settings/ # 设置组件 +│ │ └── ... # 其他组件 +│ ├── const/ # 常量定义 +│ ├── directive/ # 自定义指令 +│ ├── hooks/ # 自定义 Hooks +│ ├── layout/ # 布局组件 +│ ├── router/ # 路由配置 +│ ├── services/ # 服务 +│ ├── store/ # Pinia 状态管理 +│ │ ├── modules/ # Pinia 模块 +│ │ └── index.ts # Pinia 入口 +│ ├── type/ # 类型定义 +│ ├── types/ # 更多类型定义 +│ ├── utils/ # 工具函数 +│ ├── views/ # 页面视图 +│ ├── App.vue # 根组件 +│ ├── index.css # 全局样式 +│ ├── index.html # HTML 模板 +│ ├── main.ts # 渲染进程入口 +│ └── ... # 其他文件 +├── .env.development # 开发环境变量 +├── .env.development.local # 本地开发环境变量 +├── .env.production.local # 本地生产环境变量 +├── .eslintrc.cjs # ESLint 配置 +├── .gitignore # Git 忽略文件 +├── .prettierrc.yaml # Prettier 配置 +├── electron-builder.yml # electron-builder 配置 +├── electron.vite.config.ts # electron-vite 配置 +├── package.json # 项目配置 +├── postcss.config.js # PostCSS 配置 +├── tailwind.config.js # Tailwind 配置 +├── tsconfig.json # TypeScript 配置 +├── tsconfig.node.json # 节点 TypeScript 配置 +└── tsconfig.web.json # Web TypeScript 配置 +``` + +## 主要组件说明 + +### 主进程 (src/main) + +主进程负责创建窗口、处理系统层面的交互以及与渲染进程的通信。 + +- **index.ts**: 应用主入口,负责创建窗口和应用生命周期管理 +- **lyric.ts**: 歌词解析和处理 +- **unblockMusic.ts**: 网易云音乐解锁功能 +- **server.ts**: 本地服务器 + +### 预加载脚本 (src/preload) + +预加载脚本在渲染进程加载前执行,提供了渲染进程和主进程之间的桥接功能。 + +### 渲染进程 (src/renderer) + +渲染进程是基于 Vue 3 的前端应用,负责 UI 渲染和用户交互。 + +- **components/**: 包含各种 UI 组件 + - **common/**: 通用组件 + - **home/**: 首页相关组件 + - **lyric/**: 歌词显示组件 + - **settings/**: 设置界面组件 + - **MusicList.vue**: 音乐列表组件 + - **MvPlayer.vue**: MV 播放器 + - **EQControl.vue**: 均衡器控制 + - **...**: 其他组件 + +- **store/**: Pinia 状态管理 + - **modules/**: 各功能模块的状态管理 + - **index.ts**: 状态管理入口 + +- **views/**: 页面视图组件 + +- **router/**: 路由配置 + +- **api/**: API 请求封装 + +- **utils/**: 工具函数 + +## 开发指南 + +### 命名约定 + +- 目录使用 kebab-case (如: components/auth-wizard) +- 组件文件名使用 PascalCase (如: AuthWizard.vue) +- 可组合式函数使用 camelCase (如: useAuthState.ts) + +### 代码风格 + +- 使用 Composition API 和 `