【Cursor】Cursor中的Project Rules是什么?

Cursor版本

当前Cursor版本:0.45.14

Project Rules简介

Project Rules 是 Cursor 0.45 版本新增的功能,和 .cursorrules 一样是项目特定的规则,有助于人工智能理解并遵循项目的约定。

为什么要有Project Rules

在思考这个问题前,我们可以先回想一下 .cursorrules 存在的问题,有哪些痛点是 .cursorrules 解决不了的:

  • 单文件限制:实际项目中规则通常写在一起,当规则多时 .cursorrules 文件会变得异常庞大、难以维护
  • 规则冲突:我们可以设置全局Rules for AI,项目中我们可以设置项目Rules,两者极易发生冲突且覆盖规则不可控,会导致很多意想不到的结果
  • 功能单一:实际开发过程中,项目通常采用前后端分离,一个项目中不可能只有一种语言,.cursorrules 文件很难处理多种语言规则
  • 不适用团队开发:在团队中共同维护一套规则是比较困难的,大量规则写到一起,维护成本较高且容易引起规冲突

再来看一下Project Rules的功能:

  • 多文件管理:可以创建多个规则文件,分类管理
  • glob 匹配模式:使用glob模式匹配指定文件或者目录使用的规则
  • 规则继承:支持规则文件之间的引用作为上下文
  • 自动加载:当匹配到文件自动加载规则,规则变更后自动更新生效
  • 版本控制:精细灵活的规则模式方便团队协作

其次Cursor官方宣布将来会废弃 .cursorrules,主推Project Rules,提前学习一下以备不时之需。

迁移.cursorrules

从老项目迁移 .cursorrules 也很简单,只需将 .cursorrules 文件名修改为 文件名.mdc,然后移动到 .cursor/rules 目录下即可

shell 复制代码
$ mv .cursorrules .cursor/rules/pre-rules.mdc

新建Project Rules

创建Project Rules有两种方式,一种是 可视化方式,一种是 手动创建

可视化方式

进入Cursor设置页面,点击【General】找到【Project Rules]

点击【Add new rule】,输入规则文件名称

创建完成就可以看到在项目根目录多了一个 .cursor/rules 目录,目录是刚刚创建的 vue3-rules.mdc 文件

手动创建

在项目根目录创建一个 .cursor/rules 目录(注意是两级目录)或者使用命令行创建

shell 复制代码
$ mkdir -p .cursor/rules

在 .cursor/rules 目录下新建 typescript-rules.mdc 文件,内容如下:

yaml 复制代码
---
description: TypeScript coding standards
globs: **/*.ts,**/*.tsx
priority: 1
---
# TypeScript Coding Standards
## 基本规范
- 使用 `const` 而不是 `let` 来声明常量
- 使用 `const` 而不是 `let` 来声明变量
- 使用2个空格缩进
- 显式声明函数返回类型
- 使用单引号
- 使用箭头函数
- 使用解构赋值
- 避免使用 `any` 类型

Project Rules规则格式

mdc规则

新规则文件采用 .mdc 格式,主要由两部分组成:

  • YAML格式头部配置
    • name:项目规则名称
    • description:项目规则描述
    • priority:项目规则优先级,默认优先级为0,数字越大优先级越高,相同优先级按文件名排序
    • globs:匹配规则
    • when:规则生效条件,满足条件的规则才会生效
  • Markdown或者XML格式规则内容

glob规则

常用的 glob 语法规则:

  • *:匹配任意文件名
  • **:匹配任意目录深度
  • !:排除匹配
  • {}:组合匹配

glob的基本语法非常灵活可以任意组合,我们可以组合出更多满足日常需求的规则

bash 复制代码
# 多内容匹配
**/*.{ts, tsx, js} 
# 匹配所有 .ts 文件
**/*.ts
# 排除测试文件
!**/*.test.ts
# 排除构建目录
!**/dist/**
!**/build/**
 
# 匹配特定目录
src/components/**/*.tsx

规则继承复用

Project Rules的规则继承、复用也很简单,就是在一个 .mdc 文件中通过 @file 引入其他规则作为上下文使用

条件规则

Project Rules支持根据环境变量设置规则:

yaml 复制代码
---
name: develop-rules
description: Development environment rules
when: ${NODE_ENV} === 'development'
---

Project Rules分类管理?

看到有小伙伴将Project Rules做了分类管理,如下:

arduino 复制代码
.cursor/rules                       
├─ common                   
│  └─ base.mdc             // 通用规则     
├─ frontend                 
│  ├─ vue3-rules.mdc       // 前端vue3规则  
│  └─ typescript-rules.mdc // 前端ts规则 
└─ styles                   
   └─ less.mdc             // 样式less规则 

经本人测试该方式不会被系统识别会导致Project Rules失效,Cursor该版本不建议做Project Rules分类管理。

使用Project Rules

在Chat中使用

通常Project Rules是不用手动调用的,当Project Rules不生效时,可以考虑在Chat中Project Rules可以作为上下文引入使用

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | |

在Composer中使用

同样当Project Rules不生效时,可以考虑在Chat中Project Rules可以作为上下文引入使用

官方mdc

官网地址:cursor.directory/generate

cursor.directory提供了生成Project Rules的功能,只需按提示上传文件即可

最佳实践案例

以下几个规则案例来自:article.juejin.cn/post/747104...

React规则

yaml 复制代码
---
name: react-rules
description: React project best practices and coding standards
globs:
    - 'src/**/*.tsx'
    - 'src/**/*.jsx'
    - 'src/**/*.ts'
priority: 2
---
# React 项目规范
## 组件规范
### 基础规则
-   使用函数组件 + Hooks 模式
-   组件文件使用 .tsx 扩展名
-   组件名使用 PascalCase 命名
-   文件名与组件名保持一致
### 目录结构
src/
├── components/        # 通用组件
├── pages/            # 页面组件
├── hooks/            # 自定义 hooks
├── utils/            # 工具函数
├── services/         # API 服务
├── types/            # TypeScript 类型
└── styles/           # 样式文件
### Hooks 使用规范
-   自定义 Hook 以 `use` 开头
-   避免在循环/条件语句中使用 Hooks
-   合理使用 useMemo 和 useCallback
-   使用 useContext 管理全局状态
### 性能优化
-   合理拆分组件
-   使用 React.memo 避免不必要渲染
-   使用 React.lazy 实现代码分割
-   图片使用 next/image 优化
### TypeScript 集成
-   为 Props 定义接口
-   使用 FC 类型声明组件
-   避免使用 any
-   合理使用泛型
## 状态管理
-   小型项目使用 Context + useReducer
-   大型项目推荐使用 Redux Toolkit
-   遵循不可变数据原则
-   合理划分 state 结构

Vue规则

yaml 复制代码
---
name: vue-rules
description: Vue.js project best practices and coding standards
globs:
  - "src/**/*.vue"
  - "src/**/*.ts"
priority: 2
---
# Vue 项目规范
## 组件规范
### 基础规则
- 使用 Composition API
- 组件名使用 PascalCase
- Props 定义使用 defineProps
- 事件使用 defineEmits
### 目录结构
src/
├── components/        # 通用组件
├── views/            # 页面视图
├── composables/      # 组合式函数
├── utils/            # 工具函数
├── api/              # API 接口
├── types/            # TypeScript 类型
└── assets/           # 静态资源
### 组合式函数规范
- 以 `use` 开头命名
- 一个函数只做一件事
- 返回响应式数据
- 注意依赖收集
### 性能优化
- 合理使用 computed
- v-show vs v-if
- 使用 defineAsyncComponent
- keep-alive 缓存
### TypeScript 集成
- 使用 defineComponent
- Props 类型声明
- 组件实例类型
- 响应式类型
## 状态管理
- 小型项目使用 provide/inject
- 大型项目使用 Pinia
- 模块化状态管理
- 合理使用 storeToRefs

Styles规则

less 复制代码
---
name: style-rules
description: CSS/LESS/SCSS styling best practices
globs:
    - 'src/**/*.css'
    - 'src/**/*.less'
    - 'src/**/*.scss'
    - 'src/**/*.module.*'
priority: 1
---
# 样式规范
## 命名规范
### BEM 命名
-   Block: 独立实体
-   Element: 使用双下划线 \_\_
-   Modifier: 使用双横线 --
.block {}
.block\_\_element {}
.block--modifier {}
### CSS Modules
-   文件名使用 .module.css
-   类名使用小驼峰
-   避免全局样式
-   合理使用组合
## 目录结构
styles/
├── global/ # 全局样式
├── themes/ # 主题文件
├── variables/ # 变量定义
├── mixins/ # 混入
└── components/ # 组件样式
## 响应式设计
-   使用相对单位
-   移动优先原则
-   合理使用媒体查询
-   避免固定宽度
### 断点设置
@screen-xs: 480px;
@screen-sm: 576px;
@screen-md: 768px;
@screen-lg: 992px;
@screen-xl: 1200px;
## 性能优化
-   避免深层嵌套
-   合理使用选择器
-   压缩和合并
-   CSS 代码分割
## 主题定制
-   使用 CSS 变量
-   设计 Token 系统
-   暗黑模式支持
-   主题切换方案
## 最佳实践
-   避免 !important
-   模块化样式
-   注释规范
-   代码复用

参考

article.juejin.cn/post/747104...

友情提示

见原文:【Cursor】Cursor中的Project Rules是什么?

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。

相关推荐
yaocheng的ai分身12 小时前
用cursor操作figma,设计师的春天也来了
cursor·mcp
win4r17 小时前
🚀超越cursor!Roo Code+Gemini 2.5 Pro为OpenAI Agents SDK开发工作流UI!轻松拖动组件即可搭建工作流!小白也能化身
aigc·openai·cursor
Canace17 小时前
用 Cursor 提高工作效率实战笔记
前端·cursor·mcp
ai大师1 天前
Cursor 使用 APIkey 配置 Anthropic Claude BaseURL , gpt-4o,deepseek等大模型代理指南
gpt·claude·cursor·中转api·apikey·中转apikey·免费apikey
Hongwen10011 天前
寒冬之中的AI创意实验:48小时左右从零打造吉卜力风格AI绘图网站
前端·后端·cursor
酱酱们的每日掘金1 天前
10分钟搞定高德地图 MCP 选择约会地点、用 Trae 三天开发效率APP丨AI Coding 周刊第 2 期
ai编程·cursor·mcp
chaodaibing2 天前
测试cursor-AI编辑器
ai·cursor
cooljser2 天前
cursor 额度用完了?试试这个脚本,无限注册,手把手教程
cursor
小溪彼岸2 天前
【Cursor】Cursor Rules、NotePads、Project Rules的区别
cursor