后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载导读本文围绕 CONTRIBUTING.md 展开系统讲解 Midway一个面向全栈开发者、基于 IoC 容器的 Node.js 服务端框架开源仓库的协作规范覆盖 Issue 报告与标签体系、PR 提交流程、Commit Message 格式、分支策略与语义化版本发布机制。读完本文你将掌握一套可直接复用的开源协作实操流程并能对照仓库中的 package.json、lerna.json、scripts/publish.sh 等真实文件理解其底层执行逻辑。一、协作入口Issue 报告规范Midway 仓库要求所有问题Bug、功能建议、疑问等通过 Issue 提交并在提交前遵循以下三条基本原则明确问题类型在标题、标签或正文中说明这是哪一种 Issue先搜索再提问提交前先在已有 Issue 中检索避免创建重复问题善用标签表达意图使用下文介绍的「有用标签Useful Tags」来标清问题目的。Issue 被提交后MidwayJs 核心组成员会确认其目的、替换更准确的标签、关联对应的 Milestone里程碑并指派开发者处理。标签体系分为两组type类型描述 Issue 属于哪一类问题例如feature、bug、documentation、performance、supportscope范围描述改动涉及哪个模块或哪些文件例如core: xx、plugin: xx、deps: xx。常用标签速查表标签含义与使用场景support需要框架开发者协助定位问题或希望改进框架本身均可打此标签bug疑似缺陷。组成员复核确认为 Bug 后会补充confirmed标签confirmed已被核心组确认的真实 Bug会优先排期修复critical对线上运行的应用程序有负面影响的高优先级 Bug将立即修复core: xx与框架核心相关的 Issue例如core: loader表示与 loader 配置有关plugin: xx与插件相关的 Issue例如plugin: session表示与 session 插件有关deps: xx与依赖相关的 Issue例如deps: egg-corschore: documentation文档类 Issue需要修改文档Bug 的修复版本也通过标签标注一个 Bug 需要从某个最低版本起修复例如需要从 0.9.x 修复则打上0.9、0.10、1.0、1.1等标签明确各版本分支的修复义务。二、文档要求功能必须附带说明Midway 的协作规范有一条硬性要求所有功能变更必须同时提交文档。文档需要满足根据功能性质阐明其一个或多个方面是什么what、为什么会发生why、如何工作how尽量包含一系列操作步骤来说明如何复现、排查或解决问题鼓励提供简单但自解释的示例demo所有示例统一汇总到独立的 examples 仓库维护提供必要的参考链接如应用流程、术语解释和引用资料。这与仓库 AGENTS.md 中的文档规则一脉相承当前文档位于site/docsDocusaurus 站点要求组件文档面向初学者遵循「先讲解决什么问题、何时使用、最简单可用路径再深入高级用法、配置与扩展点」的渐进式结构而非纯 API 罗列。这正是本项目文档协作的实践基调。三、提交代码Pull Request 全流程3.1 分支开发与提交如果你是仓库开发者并愿意贡献代码请遵循以下命令流程# 创建新分支开发。分支名要有语义避免 update、tmp 这类无意义词。 # 如果是实现新功能建议使用 feature/xxx 命名。 $ git checkout -b branch-name # 完成修改后运行测试。必要时新增测试用例或调整旧用例。 $ npm test # 测试通过后即可推送。注意提交信息需遵循规范格式。 $ git add . # 使用 git add -u 可删除文件 $ git commit -m fix(role): role.use must xxx $ git push origin branch-name在当前仓库中npm test的实际执行是lerna run test见 package.json即通过 Lerna 在 monorepo 下并行运行所有子包的测试如需单独验证某个包仓库规范建议使用pnpm -C package test限定作用域见 AGENTS.md。3.2 PR 中必须提供的信息没有人能保证一段时间后还记得某个 PR 的细节。为了让团队能快速复盘每个 PR 必须附带以下四类信息Need需求想实现什么功能一般要指明关联的 IssueUpdating Reason更新理由与 Issue 不同这里简要说明为什么需要做这个修改以及背后的逻辑Related Testing相关测试简述修改涉及哪部分测试User Tips用户提示如果 PR 涉及 API 变更或潜在兼容性问题必须给使用者注意事项纯内部改动可省略此项。3.3 风格约束通过 ESLint 校验代码风格统一由 ESLint 把关修改后的代码必须通过 lint 检查本地执行$ npm run lint当前仓库的实际命令为lerna exec --ignore midwayjs/version -- mwts check即基于 mwts 基于mwts/eslint.config.js扩展而来并针对.ts/.tsx文件接入 TypeScript 项目配置parserOptions.project同时为 Jest 测试文件注入全局变量还关闭了no-namespace、no-wrapper-object-types等对框架代码不友好的规则。若需要自动修复可运行npm run lint:fix对应mwts fix。四、Commit Message 规范Angular 格式仓库推荐使用Angular commit-message-format编写提交信息目的是获得可追踪的历史和自动生成的 CHANGELOG。规范模板如下type(scope): subject BLANK LINE body BLANK LINE footer1type类型必选必须是下列取值之一feat新功能fixBug 修复docs仅文档变更style不影响代码含义的改动空白、格式、缺失分号等refactor既非修 Bug 也非加功能的代码重构perf性能提升test补充缺失的测试chore构建过程或辅助工具、库的变更如文档生成deps依赖更新2scope范围可选可以是任何能指明改动位置的标识如$location、$browser、$compile等。结合本仓库常见的 scope 例如core、web、plugin: session等。3subject主题用简洁的语言描述这次提交做了什么。4body正文如果 subject 不足以自解释可在正文补充目的或原因等更多内容。5footer页脚如果是 Breaking Change必须在此部分明确标注关联 Issue如Closes #1, Closes #2, #3若涉及旧功能或新功能的变更请关联doc与midway-init如midwayjs/midway-bin#123。完整示例fix($compile): [BREAKING_CHANGE] couple of unit tests for IE9 Older IEs serialize html uppercased, but IE9 does not... Would be better to expect case insensitive, unfortunately, jasmine does not allow to user regexps for throw expectations. Document change on midwayjs/midway#123 Closes #392 BREAKING CHANGE: Breaks foo.bar api, foo.baz should be used instead这套格式在仓库中已被严格执行AGENTS.md 明确要求 PR 标题必须使用标准提交格式如feat: xxx、fix: xxxlerna.json 的changelog.labels配置也将pr: breaking change、pr: new feature、pr: bug fix等标签映射为 CHANGELOG 中的分类条目说明 PR 标签与提交信息共同驱动变更日志的生成。五、Release语义化版本与分支策略5.1 分支策略Midway 基于semver语义化版本进行发布master分支是最新稳定版next分支是开发中的下一个稳定版所有新功能与 Bug 修复都会进入master或next分支安全问题除外以此激励开发者升级到最新稳定版若有 API 被废弃需在当前稳定版中标注deprecate旧版 API 应保持兼容直到下一个稳定版发布master分支不带发布 tag上层框架可按语义化版本与稳定版协作next分支打nexttag上层框架可通过midwaynext试用开发中的版本由 Milestone 决定LTS 版本凡列入 Milestone 的版本即为 LTS出现问题会持续打补丁。5.2 发布策略与 PM 职责每个稳定版发布会指定一名 PM发布经理分阶段负责准备阶段建立 Milestone确认 Issue 与 Milestone 关联指派并更新 Issue从master创建next分支并打nexttag。发布前确认性能测试通过当前 Milestone 内的所有 Issue 已关闭或可推迟到后续版本打开 Release Proposal MR撰写History参考 Node.js 的 CHANGELOG 写法并同步修正文档中与该版本相关的内容。提交可自动生成$ npm run commits提名下一稳定版的 PM。发布中所有上述 tag 都指在package.json中为 npm 添加的 tagpublishConfig: { tag: next }5.3 仓库中的发布实现在真实仓库中发布流程由 scripts/publish.sh 与 package.json 中的脚本承接可直接对照理解npm run release执行sh scripts/publish.sh先构建build.sh并生成 skill-midway 产物随后lerna version统一提升版本lerna publish from-git发布所有变更包最后调用 scripts/create_github_release.js 从 CHANGELOG.md 中截取当前版本章节通过 GitHub API 创建或更新 Release需要环境变量GITHUB_AUTH或GITHUB_TOKENnpm run beta/npm run next/npm run canary分别对应sh scripts/publish.sh beta|next|canarybeta 使用--dist-tag beta全量强制发布next 使用--dist-tag nextcanary 则先提升 major 版本再以--canary --preid alpha --dist-tag alpha发布预发布版本——这正是上文「next分支打nexttag」策略的落地实现版本号本身由 lerna.json 维护当前为4.2.3lerna 的publish.ignoreChanges配置确保纯文档、测试、站点等改动不会触发不必要的包发布。5.4 版本记录与回滚机制发布过程中scripts/generate_version.js 会执行lerna ls --json汇总所有子包版本写入packages/version/versions/{decorator核心版本}-{core核心版本}.json并去重追加多版本记录同时更新 packages/version/index.js 的时间戳与核心版本快照scripts/generate_changelog.js 则调用npx lerna-changelog --nextVersion生成当前版本的变更日志并插入 CHANGELOG.md 顶部。此外scripts/generate_rollback.js 会对比本地与 npm 上已发布版本的差异为每个新版本生成回滚脚本存放在 scripts/rollback 目录便于发布异常时快速将latesttag 恢复至上一版本——这套「版本快照 自动 CHANGELOG 一键回滚」的组合构成了 Midway 发布链路的完整闭环。六、协作规范的仓库佐证小结规范章节仓库中的对应实现Issue 标签体系lerna.json 的changelog.labels映射pr: 系列标签测试要求package.json 的test脚本lerna run test与 AGENTS.md 的组件测试要求Lint 约束package.json 的lint/lint:fix脚本与 eslint.config.js 的 mwts 配置Commit 格式AGENTS.md 对 PR 标题格式的硬性要求分支与 tag 策略scripts/publish.sh 中 beta/next/canary 的--dist-tag实现版本与 CHANGELOGscripts/generate_version.js、scripts/generate_changelog.js、scripts/generate_rollback.js这套从 Issue 报告、PR 提交、Commit 规范到版本发布的完整协作链路既保证了 Midway 这个大型 monorepo 在众多贡献者协作下的代码质量与历史可追溯性也让自动化工具链Lerna、CHANGELOG、版本快照能够稳定运转。对于希望向 Midway 贡献代码的开发者而言遵循本指南即可快速融入其协作节奏。赞分享后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载相关推荐MoviePilot 协作与发布规范Commit 约定、分支策略、版本管理与 CI/CD 发布流程全解析MoviePilot 协作与发布规范Commit 约定、分支策略、版本管理与 CI/CD 发布流程全解析 导读 本文基于 MoviePilot 仓库中 doc后端AI AgentMCP 服务AI 技能Rayburst 工程协作指南从架构约束到发布流程的 Agent 开发规范全解析Rayburst 工程协作指南从架构约束到发布流程的 Agent 开发规范全解析 本文以 Rayburst 仓库根目录的 AGENTS.md https://桌面应用网络TensorBoardX 仓库工程规范实战指南发布流程、版本管理、环境约束与本地测试TensorBoardX 仓库工程规范实战指南发布流程、版本管理、环境约束与本地测试 导读 本文以 tensorboardX 仓库根目录下的 AI_tool.机器学习数据可视化上一篇从零开始掌握Slint构建跨平台原生GUI的终极指南下一篇Scaffold-ETH多语言支持i18n集成与前端文本国际化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
