Skip to main content
Glama
changesets-integration-guide.md6.91 kB
# Changesets 集成指南 ## 概述 Changesets 是一个用于管理 monorepo 版本控制和发布的工具,特别适合我们当前的 MCP Swagger 项目。它可以帮助我们: - 自动化版本管理 - 生成 CHANGELOG - 协调多包发布 - 简化发布流程 ## 技术方案 ### 1. 架构设计 ``` mcp-swagger-server/ ├── .changeset/ │ ├── config.json # Changesets 配置 │ └── README.md # 使用说明 ├── packages/ │ ├── mcp-swagger-server/ # 主服务包 │ ├── mcp-swagger-parser/ # 解析器包 │ └── mcp-swagger-ui/ # UI包(可选) └── package.json # 根包配置 ``` ### 2. 工作流程 1. **开发阶段**:开发者完成功能后,运行 `changeset` 命令创建变更集 2. **PR 阶段**:变更集文件随 PR 一起提交 3. **发布阶段**:运行 `changeset version` 更新版本号,运行 `changeset publish` 发布包 ## 配置方案 ### 2.1 基础配置 ```json // .changeset/config.json { "changelog": "@changesets/cli/changelog", "commit": false, "fixed": [], "linked": [], "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", "ignore": ["@mcp-swagger/api"] } ``` ### 2.2 包配置说明 - **mcp-swagger-server**: 主包,独立版本管理 - **mcp-swagger-parser**: 解析器包,独立版本管理 - **@mcp-swagger/api**: 私有包,不发布(ignore) ### 2.3 版本策略 - **独立版本**:每个包维护自己的版本号 - **语义化版本**:遵循 semver 规范 - **自动更新依赖**:内部依赖自动更新为 patch 版本 ## 实施计划 ### 第一阶段:基础设置 1. 安装 Changesets 依赖 2. 初始化 Changesets 配置 3. 更新 package.json 脚本 4. 创建 GitHub Actions 工作流 ### 第二阶段:集成测试 1. 创建测试变更集 2. 验证版本更新机制 3. 测试发布流程 4. 文档完善 ### 第三阶段:生产部署 1. 正式启用 Changesets 2. 团队培训 3. 流程优化 ## 脚本命令 ### 2.1 开发命令 ```bash # 创建变更集 pnpm changeset # 查看变更集状态 pnpm changeset status # 更新版本号 pnpm changeset version # 发布包 pnpm changeset publish ``` ### 2.2 集成到 package.json ```json { "scripts": { "changeset": "changeset", "changeset:version": "changeset version", "changeset:publish": "changeset publish", "changeset:status": "changeset status", "version-packages": "changeset version && pnpm install --lockfile-only", "release": "pnpm build && changeset publish" } } ``` ## GitHub Actions 集成 ### 2.1 自动发布工作流 ```yaml name: Release on: push: branches: - main jobs: release: name: Release runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install pnpm uses: pnpm/action-setup@v2 with: version: 8 - name: Install Dependencies run: pnpm install --frozen-lockfile - name: Build packages run: pnpm build - name: Create Release Pull Request or Publish id: changesets uses: changesets/action@v1 with: publish: pnpm release commit: "chore: release packages" title: "chore: release packages" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} ``` ### 2.2 变更集验证工作流 ```yaml name: Changeset Check on: pull_request: branches: - main jobs: changeset: runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install pnpm uses: pnpm/action-setup@v2 with: version: 8 - name: Install Dependencies run: pnpm install --frozen-lockfile - name: Check for changeset run: pnpm changeset status --since=origin/main ``` ## 使用流程 ### 2.1 开发者工作流 1. **开发功能** ```bash # 开发你的功能 git checkout -b feature/new-feature # ... 编写代码 ``` 2. **创建变更集** ```bash pnpm changeset ``` 系统会提示: - 选择要更新的包 - 选择版本类型(major/minor/patch) - 输入变更描述 3. **提交变更** ```bash git add . git commit -m "feat: add new feature" git push origin feature/new-feature ``` ### 2.2 维护者工作流 1. **合并 PR 后发布** ```bash # 更新版本号 pnpm changeset version # 安装依赖(更新 lockfile) pnpm install # 提交版本更新 git add . git commit -m "chore: bump versions" git push # 发布包 pnpm changeset publish ``` ## 最佳实践 ### 2.1 变更集编写规范 - **简洁明了**:描述要简洁但足够详细 - **用户视角**:从用户角度描述变更 - **分类标识**:使用 feat/fix/breaking 等标识 ### 2.2 版本选择指南 - **patch**: 修复 bug,向后兼容 - **minor**: 新功能,向后兼容 - **major**: 破坏性变更,不向后兼容 ### 2.3 发布策略 - **定期发布**:建议每周或每两周发布一次 - **紧急修复**:重要 bug 修复可以立即发布 - **预发布**:重大更新可以先发布 alpha/beta 版本 ## 迁移计划 ### 2.1 当前状态分析 - 当前版本:mcp-swagger-server@1.0.9, mcp-swagger-parser@1.0.5 - 发布方式:手动 `pnpm pack` 命令 - 版本管理:手动更新 ### 2.2 迁移步骤 1. **安装和配置 Changesets** 2. **为现有包创建初始变更集** 3. **更新构建和发布脚本** 4. **配置 CI/CD 流程** 5. **团队培训和文档更新** ## 风险评估 ### 2.1 技术风险 - **学习成本**:团队需要学习 Changesets 工作流 - **配置复杂性**:初始配置需要仔细调试 - **自动化风险**:自动发布可能导致意外发布 ### 2.2 缓解措施 - **渐进式迁移**:先在开发环境测试 - **双重检查**:保留手动发布选项 - **回滚机制**:准备回滚到原有流程的方案 ## 结论 Changesets 的集成将显著提升我们的版本管理和发布效率,特别是在 monorepo 环境中。通过自动化的版本管理和发布流程,可以减少人为错误,提高发布质量。 建议采用渐进式迁移策略,先在开发环境充分测试,确认无误后再正式启用。 ## 参考资料 - [Changesets 官方文档](https://github.com/changesets/changesets) - [pnpm Changesets 集成指南](https://pnpm.io/using-changesets) - [语义化版本规范](https://semver.org/)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zaizaizhao/mcp-swagger-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server