随着时间的推移,规则库需要不断更新和演进。本节将探讨如何通过版本控制和维护策略来管理规则的生命周期,确保规则库保持最佳状态。
为规则制定合理的版本号策略是管理规则演进的基础。推荐使用语义化版本号(Semantic Versioning):
主版本号.次版本号.修订号
- 主版本号:当做了不兼容的API修改时递增
- 次版本号:当做了向下兼容的功能性新增时递增
- 修订号:当做了向下兼容的问题修正时递增
示例规则版本元数据:
metadata:
version: 1.2.3 # 主版本.次版本.修订号
updated: "2023-03-14"
changelog: "修复了正则表达式匹配问题"
</rule>
为每个规则维护版本历史记录,帮助追踪规则的变更:
# Linux/macOS
# 创建版本历史记录文件
mkdir -p "$HOME/cursor-rules-library/categories/code-quality"
cat > "$HOME/cursor-rules-library/categories/code-quality/js-best-practices.changelog.md" << 'EOL'
# JavaScript最佳实践规则变更日志
## 版本 1.0.0 (2023-03-13)
- 初始版本
- 添加var使用检测
- 添加建议信息
## 版本 1.1.0 (2023-03-14)
- 添加箭头函数风格检查
- 改进建议信息格式
## 版本 1.1.1 (2023-03-14)
- 修复正则表达式匹配问题
- 优化性能
EOL@echo off
REM Windows CMD
REM 创建版本历史记录文件
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\categories\code-quality" mkdir "%libraryPath%\categories\code-quality"
(
echo # JavaScript最佳实践规则变更日志
echo.
echo ## 版本 1.0.0 (2023-03-13)
echo - 初始版本
echo - 添加var使用检测
echo - 添加建议信息
echo.
echo ## 版本 1.1.0 (2023-03-14)
echo - 添加箭头函数风格检查
echo - 改进建议信息格式
echo.
echo ## 版本 1.1.1 (2023-03-14)
echo - 修复正则表达式匹配问题
echo - 优化性能
) > "%libraryPath%\categories\code-quality\js-best-practices.changelog.md"将规则库纳入Git版本控制系统是管理规则变更的最佳方式:
# Linux/macOS
# 初始化规则库的Git仓库
cd ~/cursor-rules-library
git init
git add .
git commit -m "初始化规则库"@echo off
REM Windows CMD
REM 初始化规则库的Git仓库
set libraryPath=%USERPROFILE%\cursor-rules-library
cd /d "%libraryPath%"
git init
git add .
git commit -m "初始化规则库"创建.gitignore文件,排除不需要版本控制的文件:
# Linux/macOS
# 创建.gitignore文件
cat > ~/cursor-rules-library/.gitignore << 'EOL'
# 临时文件
*.tmp
*.temp
# 日志文件
*.log
# 个人配置
.user-config.json
# 缓存目录
.cache/
EOL@echo off
REM Windows CMD
REM 创建.gitignore文件
set libraryPath=%USERPROFILE%\cursor-rules-library
(
echo # 临时文件
echo *.tmp
echo *.temp
echo.
echo # 日志文件
echo *.log
echo.
echo # 个人配置
echo .user-config.json
echo.
echo # 缓存目录
echo .cache/
) > "%libraryPath%\.gitignore"随着项目需求的变化和技术的发展,规则需要不断升级和更新。以下是管理规则升级的策略:
尽量保持规则的向后兼容性,避免破坏现有项目:
- 修订版本:只修复问题,不改变行为
- 次版本:添加新功能,但保持现有功能不变
- 主版本:可以进行不兼容更改,但需要明确标注并提供迁移路径
对于重大版本更新,提供详细的升级指南:
# Linux/macOS
# 创建升级指南
mkdir -p ~/cursor-rules-library/docs
cat > ~/cursor-rules-library/docs/upgrading-to-v2.md << 'EOL'
# 升级到规则库2.0版本指南
本文档提供从规则库1.x版本升级到2.0版本的详细指导。
## 主要变更
- **正则表达式语法变更**:所有规则现在使用标准ECMAScript正则表达式语法
- **动作API更新**:`suggest`动作的参数结构已更改
- **新增过滤器类型**:添加了`semantic`和`context_aware`两种过滤器类型
## 升级步骤
1. **备份现有规则**:
```bash
cp -r .cursor/rules .cursor/rules.backup-
更新规则库:
git pull origin v2.0.0
-
迁移自定义规则:
- 更新正则表达式语法
- 调整动作参数结构
- 查看是否可以利用新过滤器类型
- 一些复杂的正则表达式可能需要手动调整
- 旧版本的模板规则需要重新生成
如有问题,请联系规则库维护团队或提交Issue。 EOL
```CMD
@echo off
REM Windows CMD
REM 创建升级指南
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\docs" mkdir "%libraryPath%\docs"
(
echo # 升级到规则库2.0版本指南
echo.
echo 本文档提供从规则库1.x版本升级到2.0版本的详细指导。
echo.
echo ## 主要变更
echo.
echo - **正则表达式语法变更**:所有规则现在使用标准ECMAScript正则表达式语法
echo - **动作API更新**:`suggest`动作的参数结构已更改
echo - **新增过滤器类型**:添加了`semantic`和`context_aware`两种过滤器类型
echo.
echo ## 升级步骤
echo.
echo 1. **备份现有规则**:
echo ```cmd
echo xcopy /e /i .cursor\rules .cursor\rules.backup
echo ```
echo.
echo 2. **更新规则库**:
echo ```cmd
echo git pull origin v2.0.0
echo ```
echo.
echo 3. **迁移自定义规则**:
echo - 更新正则表达式语法
echo - 调整动作参数结构
echo - 查看是否可以利用新过滤器类型
echo.
echo ## 已知问题
echo.
echo - 一些复杂的正则表达式可能需要手动调整
echo - 旧版本的模板规则需要重新生成
echo.
echo ## 帮助和支持
echo.
echo 如有问题,请联系规则库维护团队或提交Issue。
) > "%libraryPath%\docs\upgrading-to-v2.md"
为了简化升级过程,可以创建版本迁移工具:
# Linux/macOS
# 创建版本迁移脚本
mkdir -p ~/cursor-rules-library/scripts
cat > ~/cursor-rules-library/scripts/migrate-to-v2.sh << 'EOL'
#!/bin/bash
# 规则库迁移脚本:从v1迁移到v2
echo "开始迁移规则库到v2.0版本..."
# 设置目录
LIBRARY_DIR="$HOME/cursor-rules-library"
BACKUP_DIR="$LIBRARY_DIR/backups/v1-$(date '+%Y%m%d')"
# 创建备份
echo "创建备份到 $BACKUP_DIR..."
mkdir -p "$BACKUP_DIR"
cp -r "$LIBRARY_DIR/categories" "$BACKUP_DIR/"
cp -r "$LIBRARY_DIR/templates" "$BACKUP_DIR/"
cp "$LIBRARY_DIR/rules-index.json" "$BACKUP_DIR/"
# 更新正则表达式语法
echo "更新正则表达式语法..."
find "$LIBRARY_DIR/categories" -name "*.mdc" -type f -exec sed -i 's/\\\\\\\\w/\\\\w/g' {} \;
# 更新动作结构
echo "更新动作结构..."
find "$LIBRARY_DIR/categories" -name "*.mdc" -type f -exec sed -i 's/message:/content:/g' {} \;
# 更新版本号
echo "更新版本号..."
find "$LIBRARY_DIR/categories" -name "*.mdc" -type f -exec sed -i 's/version: 1\\.\\([0-9]\\+\\)\\.\\([0-9]\\+\\)/version: 2.0.0/g' {} \;
# 更新索引文件
echo "更新索引文件..."
jq '.rules[].version = "2.0.0"' "$LIBRARY_DIR/rules-index.json" > "$LIBRARY_DIR/rules-index.json.new"
mv "$LIBRARY_DIR/rules-index.json.new" "$LIBRARY_DIR/rules-index.json"
echo "迁移完成!"
echo "如果出现任何问题,可以从备份 $BACKUP_DIR 恢复。"
EOL
# 添加执行权限
chmod +x ~/cursor-rules-library/scripts/migrate-to-v2.sh@echo off
REM Windows CMD
REM 创建版本迁移脚本
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\scripts" mkdir "%libraryPath%\scripts"
(
echo @echo off
echo REM 规则库迁移脚本:从v1迁移到v2
echo.
echo echo 开始迁移规则库到v2.0版本...
echo.
echo REM 设置目录
echo set libraryDir=%%USERPROFILE%%\cursor-rules-library
echo for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set backupDate=%%c%%a%%b)
echo set backupDir=%%libraryDir%%\backups\v1-%%backupDate%%
echo.
echo REM 创建备份
echo echo 创建备份到 %%backupDir%%...
echo if not exist "%%backupDir%%" mkdir "%%backupDir%%"
echo xcopy /e /i "%%libraryDir%%\categories" "%%backupDir%%\categories"
echo xcopy /e /i "%%libraryDir%%\templates" "%%backupDir%%\templates"
echo copy "%%libraryDir%%\rules-index.json" "%%backupDir%%\"
echo.
echo REM 在CMD中执行文本替换
echo echo 正在执行迁移操作...
echo findstr /v /c:"version": "1.0" "%%libraryDir%%\rules-index.json" > "%%libraryDir%%\rules-index.tmp"
echo move /y "%%libraryDir%%\rules-index.tmp" "%%libraryDir%%\rules-index.json"
echo echo 正在更新版本号信息...
echo echo {"version": "2.0", "updated_at": "%%DATE%% %%TIME%%", > "%%libraryDir%%\version.tmp"
echo type "%%libraryDir%%\version.tmp" > "%%libraryDir%%\version.json"
echo del "%%libraryDir%%\version.tmp"
echo.
echo echo 迁移完成。规则库已成功升级到2.0版本。
) > "%libraryPath%\scripts\migrate-to-v2.bat"