首页 / 资讯中心 / 文章详情

Cherry Markdown 贡献指南:Yarn workspace 与 Vite+ 驱动的开发、验证与 PR 全流程

Cherry Markdown 贡献指南:Yarn workspace 与 Vite+ 驱动的开发、验证与 PR 全流程 ★ FEATURED ARTICLE
前端UI组件富文本【免费下载链接】cherry-markdown✨ A Markdown Editor项目地址https://gitcode.com/GitHub_Trending/ch/cherry-markdown点击查看免费下载Cherry Markdown 是一个以 Markdown 编辑器为核心的开源项目仓库采用 Yarn workspace Vite命令行简称vp的统一工具链。本文以仓库根目录的 CONTRIBUTING.md 为主体结合根目录 package.json、vite.config.ts、commitlint.config.js 与各子包配置系统讲解从环境搭建、日常开发、修改验证到提交 PR 的完整贡献流程让读者掌握一套可复现、与 CI 对齐的仓库级开发方法。项目结构与工具链贡献任何开源项目前先建立正确的仓库整体认知。Cherry Markdown 的仓库结构与职责划分如下以根目录CONTRIBUTING.md为准packages/cherry-markdown核心编辑器产出 Full、Core、Stream、Engine 四类构建产物packages/miniProgram小程序适配包packages/client基于 Tauri 的桌面客户端packages/vscodePluginVS Code 插件examples/示例与发布验证项目其中examples/react_demo、examples/miniProgram同样被纳入 workspace.changeset/发布包的版本变更说明目录。统一工具链是本文反复强调的第一原则。仓库是 Yarn workspace项目使用 Vite命令行简称vp统一处理依赖安装、workspace 任务编排、开发服务器、构建、测试和代码检查。根目录 package.json 的workspaces字段明确列出packages/*、examples/react_demo和examples/miniProgramdevDependencies中声明了vite-plus0.2.6、vite^8.2.1、vitest4.1.10与typescript^6.0.2。因此贡献者应当优先使用根目录脚本不要在子包中引入另一套 workspace 工具或 lockfile。开发环境准备版本要求根目录 package.json 的engines字段给出了硬性约束与CONTRIBUTING.md完全一致Node.js22仓库根目录.node-version文件固定为24推荐直接使用该版本保证行为一致Yarn1.22.18或更高仓库通过packageManager字段固定为yarn1.22.22sha512.a6b2...安装时会校验。若开发桌面客户端还需要 Rust 及 Tauri 系统依赖具体见 客户端贡献说明该文件明确要求先安装 Rust 与 Node并使用yarn install从仓库根目录安装依赖禁止为该 workspace 单独引入 pnpm lockfile若修改小程序示例还需要微信开发者工具。安装依赖yarn install安装完成后根目录 package.json 的postinstall钩子会执行vp run -F cherry-markdown iconfont为核心编辑器生成所需 iconfont 资源。若本机 shell 找不到vp有两个备选入口使用根目录脚本例如yarn test或直接调用./node_modules/.bin/vp——后续所有示例统一采用后者这也是CONTRIBUTING.md推荐的做法。日常开发工作流分支策略贡献流程从dev分支出发每个 PR 保持聚焦单一主题git switch dev git pull --ff-only origin dev git switch -c feat/short-description分支名建议使用feat/简短描述这类可读命名避免把无关的历史提交合并进功能分支。启动本地开发启动核心编辑器示例yarn dev根目录 package.json 中dev脚本实际执行vp dev --config packages/cherry-markdown/vite.config.ts即通过 Vite 以核心包自身的 vite.config.ts 启动开发服务器并运行vp run dev:core。常用命令一览以下命令表来自根目录 package.json与CONTRIBUTING.md的命令表一一对应均以vp为底层调度目的命令启动桌面客户端Tauriyarn dev:client启动 React 示例yarn example:react构建全部 workspaceyarn build只构建核心包 / 小程序包yarn build:core/yarn build:miniProgram运行全部 / 核心 / 小程序测试yarn test/yarn test:core/yarn test:miniProgram类型检查yarn typecheck代码检查 / 自动修复yarn lint/yarn lint:fix更新测试快照yarn test:update各命令底层映射如下见 package.jsonyarn build依次构建核心包、小程序包、小程序示例、React 示例、客户端与 VS Code 插件yarn test仅运行核心包与小程序的测试yarn lint实际执行vp checkyarn lint:fix执行vp check --fixyarn typecheck依次对核心包与小程序执行类型检查。针对单个 workspace 编排任务使用 Vite 的过滤参数-F精准定位某个包./node_modules/.bin/vp run -F cherry-markdown build ./node_modules/.bin/vp run -F cherry-markdown test ./node_modules/.bin/vp run -F cherry-markdown/miniprogram typecheck注意包名差异核心包过滤名是cherry-markdown小程序包则是cherry-markdown/miniprogram与根目录package.json中 workspace 名称一致。CONTRIBUTING.md特别强调不要把vite、vitest或底层脚本当作根 workspace 的统一入口它们应通过包脚本或vp调度以确保本地行为与 CI 一致。根目录 vite.config.ts 中run.cache配置scripts 关闭缓存、tasks 开启也印证了vp承担任务编排与缓存职责。修改与验证一个可复现的流程CONTRIBUTING.md给出了修改代码后的验证清单下面是逐步展开先确认归属判断修改属于哪个 package阅读该 package 的 README、构建配置和现有测试。例如核心包源码位于 packages/cherry-markdown/src测试位于 packages/cherry-markdown/test。补测试功能或缺陷修复应补充/更新对应测试涉及编辑器行为时同时在实际示例页面验证核心包测试覆盖 hooks、toolbars、utils 等多个维度如 HookCenter.spec.ts、BubbleFormula.spec.ts 等。写 changeset涉及公开包、构建产物、依赖或发布行为时在.changeset/新增变更说明不要手工编辑生成的 changelog。仓库现有的.changeset/calm-images-rest.md给出了标准格式frontmatter 声明受影响包cherry-markdown: patch正文一句话说明用户可见变化如销毁编辑器后忽略仍在进行的懒加载图片回调。核心包改动完整验证yarn lint yarn typecheck yarn test yarn buildyarn lint即vp check由根目录 vite.config.ts 统一调度 ESLint 检查yarn typecheck在核心包内执行tsc --project tsconfig.json --noEmit与tsc --project test/tsconfig.json --noEmit源码与测试两套配置都要过yarn build在核心包内串联clean → iconfont → build:styles → build:types → build:addons → build:full的完整流水线。检查发布产物./node_modules/.bin/vp run -F cherry-markdown test:artifacts该命令运行核心包 package.json 中的test:artifacts脚本即vp test run test/build/built-artifact-contract.spec.js覆盖 UMD、ESM、CSS、类型声明等公开产物。构建生成的dist不应作为源码修改提交除非项目已有明确要求。提交前检查git diff --check git status --short根目录 vite.config.ts 中配置了 staged 检查*.{js,ts,tsx,vue,scss,css,json,md,mdx}: vp check --fix会在提交时自动处理暂存文件提交钩子还会执行 commit message 校验。自动修复后请再次检查实际 diff确认没有意外改动。提交信息、Changeset 与 PR 规范Conventional Commits 提交信息提交信息遵循 Conventional Commits 规范仓库通过根目录 commitlint.config.js 强制约束基于commitlint/config-conventionaltype-enum限定类型枚举包括feat、fix、docs、style、refactor、perf、test、chore、ci、build、revert、release、WIP自定义插件规则header-format通过正则/^[a-zA-Z](\([a-zA-Z0-9_-]\))?:\s[^\s]/校验冒号后面必须有且只有一个空格。CONTRIBUTING.md中的示例fix(editor): preserve selection after paste feat(miniprogram): support streaming blocks docs: update contribution workflowChangeset 写法会进入发布包的改动应在.changeset/形容词-名词.md中准确列出受影响的包和版本级别patch/minor/major并说明用户可见变化。纯文档、测试或内部 CI 改动通常不需要 changeset。仓库.changeset/目录中已有多个示例可供参考例如calm-images-rest.mdpatch、four-onions-pay.md等命名均为形容词-名词.md的随机风格。PR 提交要点PR 目标分支通常是dev不要把无关的历史合并进功能分支PR 描述应说明背景、修改范围、验证命令及已知限制不要提交密钥、个人配置、构建缓存或未经确认的生成文件提交 PR 后等待 CI 完成重点关注lint、typecheck、test、build和发布产物检查CI 使用 Vite 的vp install和vp run本地应优先复现同一组根命令从而保证本地验证与 CI 结果一致。若只修改客户端、VS Code 插件或示例请额外运行对应 workspace 的build、test或typecheck并在 PR 中记录实际命令。例如客户端部分可参考 packages/client/CONTRIBUTING.mdyarn dev:client调用 Tauri 原生窗口与 Vite dev server配置见 tauri.conf.jsonyarn build:client构建客户端打包原生产物使用./node_modules/.bin/vp run -F cherry-markdown/client tauri:build。相关文档速查以下是CONTRIBUTING.md推荐的深入阅读入口均以仓库根目录为起点的相对路径核心包 README核心编辑器 API 与使用方式客户端贡献说明Tauri 客户端的额外环境要求与命令小程序示例说明小程序示例的构建与调试。赞分享前端UI组件富文本【免费下载链接】cherry-markdown✨ A Markdown Editor项目地址https://gitcode.com/GitHub_Trending/ch/cherry-markdown点击查看免费下载相关推荐autojump开发指南贡献代码与提交PR完全流程autojump开发指南贡献代码与提交PR完全流程 你是否在为开源项目贡献代码时感到迷茫本文将带你一步步完成从环境搭建到提交PRPull RequestCLI开发工具TeslaMate开发指南贡献代码与提交PR的流程TeslaMate开发指南贡献代码与提交PR的流程 环境准备 开发TeslaMate需安装以下依赖Elixir 1.17.3 otp 26 、Postgr后端数据分析数据可视化变更描述变更描述 详细描述本次PR的变更内容 关联Issue Close 123 测试验证 单元测试通过 功能测试通过 文档更新完成 截图/示例 提供相关截图或代码示例前端UI组件富文本上一篇PyTorch Lightning Trainer 完全指南从基本用法到全部核心参数详解下一篇Ray 命名空间Namespace使用指南任务与命名 Actor 的逻辑隔离实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站