分享一个 Cursor 项目规则(适用于前端开发 Vue 3 项目)

2 min

分享一个我现在正在使用的 Cursor 项目规则(适用于前端开发 Vue 3 项目)。

也可以直接下载 cursor-project-rules-for-vue3.mdc 这个文件放到项目根目录下面的 .cursor\rules\ 目录里面,Cursor 会默认启用这个目录里面的所有规则。

规则内容如下:

---

description: "Lanxk.com Vue 3 项目规范和开发指南"

globs: ["**/*.{vue,ts,scss,js,jsx,tsx}"]

alwaysApply: true

---

# 项目规范

## 技术栈规范

- 前端框架:Vue 3 (v3.5.13, 组合式API)

- UI框架:Element Plus (v2.7.4)

- 状态管理:Pinia (v2.1.7)

- 样式:SASS (v1.75.0)

- 构建工具:Vite (v5.2.6)

- TypeScript (v5.7.x)

- Node.js (≥v18.0.0)

## 代码规范

### 组件开发规范

- 使用 PascalCase 命名Vue组件文件(如:`TemplateBase.vue`)

- 功能相似的组件放在同一目录下

- 组件必须使用 `<script setup>` 语法

- Props 定义必须指定类型和默认值

- 禁止直接修改 props,使用 emit 通知父组件更新

### 样式编写规范

- 使用 kebab-case 命名 CSS 类(如:`todo-list`)

- 必须遵循 BEM 命名规范:

  - 块:`block`

  - 元素:`block__element`

  - 修饰符:`block--modifier`

- 组件样式必须使用 `scoped` 属性

- 禁止使用行内样式

- 禁止直接使用 Element Plus 的类名作为选择器(如:`.el-input`)

### 状态管理规范

- 全局状态必须使用 Pinia store 管理

- 使用 computed 属性获取派生状态,避免方法调用

- Store 中的 action 必须使用 async/await 处理异步

- 组件中优先使用 props/emit,避免滥用全局状态

### TypeScript 规范

- 必须显式声明类型

- 禁止使用 any 类型

- 接口和类型定义使用 PascalCase

- 优先使用 interface 而非 type

## 项目结构规范

```

src/

├── api/ # API请求

├── assets/ # 静态资源

├── components/ # 组件

├── router/ # 路由

├── stores/ # Pinia存储

├── utils/ # 工具函数

└── views/ # 页面

```

## 禁止事项

- 禁止使用 jQuery 或直接操作 DOM

- 禁止在模板中使用复杂表达式

- 禁止直接修改 props 中的对象属性

- 禁止在组件中使用全局变量

- 禁止使用特定框架的类名作为选择器

## 特殊注意事项

1. 保留 CSS 中原有的 !important 关键字

2. 保留原有的代码注释和 console.log

3. 请勿将文案和注释中的全角引号(“”)改为半角引号("")