【免费下载链接】pi-extensionsA monorepo of Pi Coding Agent extensions项目地址https://gitcode.com/gh_mirrors/pi/pi-extensions点击查看免费下载pi-extensions 是一个基于 npm workspaces 的 Monorepo统一管理 37 个可独立安装的 Pi Coding Agent 扩展并配套了一套完整的构建、测试与 Changesets 发布流水线。本文带你快速读懂它的工程体系从 esbuild 构建、Vitest 测试隔离到 Changesets 独立版本管理与自动化发布全部拆解清楚适合想学习大型 Monorepo 工程实践的新手读者。项目全景一个扩展仓库如何组织仓库根目录只保留了最核心的配置与脚本所有业务代码都按一包一目录的方式组织目录职责packages/37 个活跃扩展包 1 个可复用库pi-tui-kit每个包自带package.json、README.md、tsconfig.json和src/deprecated/已归档的参考包被排除在活跃的构建与测试门禁之外docs/仓库约定、发布流程与测试性能等工程文档scripts/共享的检查、测试、版本管理与发布辅助脚本test/根级集成测试与仓库策略测试几个关键设计决策见 AGENTS.md每个扩展独立可安装包名统一使用narumitwnpm scope如narumitw/pi-goal用户只装需要的部分单一入口点每个扩展只声明一个入口./src/index.ts或构建产物./dist/index.ts由 Pi 的 Jiti 运行时直接加载废弃即隔离不再维护的包移入deprecated/不参与 workspace 脚本避免污染门禁。构建体系esbuild 共享 runtime builder构建入口是根 package.json 中的npm run build它遍历所有 workspace 执行各自的构建。真正的构建策略集中在 scripts/runtime-builder.mjs各包只保留入口、banner、临时目录前缀、eager 边界等包级差异共享同一套 esbuild 打包、确定性 staging、SHA-256 基线校验与失败回滚逻辑。这种策略集中、差异声明的做法值得借鉴。以 packages/pi-goal/package.json 为例scripts: { build: node scripts/build-runtime.mjs, prepack: npm run build }构建细节可参考 docs/runtime-builder.md打包时外部化 Pi 自带的 peer 依赖、保留动态 import 边界、验证生成的相对导入路径确保产物在 Pi 的 Jiti 运行时中可独立加载。测试体系Vitest 共享模块边界 耗时报告npm test由 scripts/run-tests.mjs 驱动完整链路为构建 → 测试代码编译 → Vitest 运行每个阶段单独计时并输出。几个亮点1️⃣ 影响面测试选择通过PI_EXTENSIONS_TEST_BASE环境变量提供 diff 基线后select-affected-tests.mjs 只挑选受影响的测试文件运行本地默认跑全量CI 按变更裁剪。2️⃣ 隔离与共享双项目vitest.config.ts 定义了两个 projectisolated默认每个测试文件独立 fork保证状态互不污染shared仅运行经过人工审计、列入 test/shared-module-tests.ts 白名单的 203 个文件共享模块状态以换取速度。配合forks线程池、最多 2 个并发 worker、5 秒单测超时在保证集成测试会 spawn Git、LSP、MCP 子进程稳定的前提下把全量中位数从 241s 压到174s下降 27.7%——完整数据与准入规则见 docs/test-performance.md。3️⃣ 性能报告与字节码缓存自定义 reporter test/vitest.timing-reporter.ts 把每个文件/包的耗时写入node_modules/.cache/pi-extensions-test-report.json控制台只打印最慢的 5 个包开启 Node 原生字节码缓存加速重复加载同时尊重NODE_DISABLE_COMPILE_CACHE等既有开关。4️⃣ 提交前快速门禁Husky 的 pre-commit 钩子执行 scripts/pre-commit.sh对暂存文件跑 Biome 检查 增量类型检查把反馈周期压缩到秒级。静态检查三条并行的质量闸npm run check先执行构建再通过 scripts/run-checks.mjs 并行运行三项检查命令作用check:biomeBiome 格式与 Lint--error-on-warnings零容忍check:boundariesscripts/check-extension-boundaries.mjs 基于 TS Compiler API 静态校验包边界入口点合法性、依赖声明、跨包源码导入等typecheck逐 workspace 严格 TypeScript 类型检查其中边界检查体现了扩展互不依赖的核心原则包之间只能通过 Pi 公共 API 或可复用库通信直接 import 另一个扩展的源码会被静态拦截。发布体系Changesets 独立版本 自动化流水线这是本工程最值得学习的部分。Changeset把发版意图写进 PR修改会影响已发布行为时开发者在 PR 中运行npm run changeset交互式选择受影响的包和 SemVer 级别patch/minor/major生成一个 Markdown 文件提交到 .changeset/ 目录。规则见 .changeset/README.md包版本完全独立fixed、linked保持为空互不捆绑纯文档、测试、工具类改动不需要 changesetpi-tui-kit新 API 与其首个消费方可以共用一个 changeset但要求先发布 Kit再发布消费方。三段式自动发布version → publish → nonechangeset 合并进main后发布工作流自动选择模式见 docs/release-workflow.md 与 docs/publish-workflow.mdversion存在未消费的 changeset → 自动创建/更新一个Version PR只改版本号、changelog 和 lockfile合并即触发下一轮publish存在未发布的版本号 → 先npm run build再以NPM_CONFIG_IGNORE_SCRIPTStrue打包避免prepack二次构建竞争产物连同 SHA256 哈希作为 artifact 传给 publish jobnone无事可做跳过。发布守护不重打包、先验证publish-packed-packages.mjs 是官方 Changesets publisher 外的一层 guard发布依赖方之前先按精确名称和版本从 registry 拉取依赖 tarball用SRI 哈希校验完整性如 verifyRegistryIntegrity校验失败或发布失败即停止后续批次绝不重打包或覆盖已发布版本——npm 发布不是原子操作恢复策略详见 docs/coordinated-releases.md权限最小化只有 publish job 持有 npm Trusted Publishing 的id-token: writeversion job 用 PAT 保证生成的 PR 能触发 CI。依赖安装策略docs/dependency-installation.md 定义了严格的供应链防线CI 用npm ci、安装脚本白名单allowScripts精确到包名版本身份、新解析的第三方依赖强制3 天最小发布龄仅pi-tui-kit自身豁免preflight 脚本 scripts/check-install-policy.mjs 在安装前逐项校验。命令速查表场景命令本地开发启动npm run dev构建全部包npm run build运行测试npm test完整静态检查npm run check记录发版意图npm run changeset查看待发版状态npm run changeset:status打包某个包npm run package:pack -- goal升级依赖npm run update总结三条可复用的工程经验门禁分层pre-commit 秒级反馈 →npm run check并行静态检查 →npm test全量测试 → CI 发布前再跑一遍越靠近发布的门禁越重测试提速靠审计过的例外不是无脑共享模块而是用白名单 状态准入规则docs/test-performance.md逐文件评审后才允许进入 shared 池发布意图与发布动作解耦changeset 文件让每个 PR 自带发版说明自动 Version PR 让人类只做最终合并决策发布侧用哈希校验守住产物完整性。这套体系让 37 个扩展既能独立演进版本又能共享一套可靠的构建、测试与发布基础设施——这正是大型 Monorepo 工程实践的教科书式案例。赞分享【免费下载链接】pi-extensionsA monorepo of Pi Coding Agent extensions项目地址https://gitcode.com/gh_mirrors/pi/pi-extensions点击查看免费下载相关推荐thinkrail 的 Changesets 发布流程为 pi-extensions 托管发布意图与 npm 交付thinkrail 的 Changesets 发布流程为 pi extensions 托管发布意图与 npm 交付 .changeset/README.md人工智能代码智能体IDE代码编辑器开发工具桌面应用前端后端插件系统Obsidian插件开发指南obsidian-terminal的Bun构建、Vitest测试与Changesets工程实践Obsidian插件开发指南obsidian terminal的Bun构建、Vitest测试与Changesets工程实践 obsidian terminalgRPC 工程化工具箱全解深入 tools 目录的构建、测试与发布体系gRPC 工程化工具箱全解深入 tools 目录的构建、测试与发布体系 导读 本指南以 gRPC 仓库的 tools 目录 https://link.gitcRPC框架网络/通信微服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
【珍藏整理】ZEBASE Zemax镜头库:500多个光学设计专利的完整上手指南 【珍藏整理】ZEBASE Zemax镜头库:500多个光学设计专利的完整上手指南 【免费下载链接】ZEBASEZemax镜头库 ZEBASE Zemax镜头库ZEBASE Zemax镜头库是一个包含众多光学设计实例的资源文件,提供了600多个ZEMAX档案格式的光学设计专利 项目地址: https://g… · 2026/11/4 11:10:45
电工证能往外租吗官方回应来了工地电工太忙根本没时间复习 电工证能往外租吗官方回应来了工地电工太忙根本没时间复习 工地太忙根本没时间复习考试,电工证能不能往外租?这个问题几乎每个在一线干活的电工都问过。 河南省应急管理厅 近期明确表示,特种作业操作证是个人执业资格的唯一证明,… · 2026/11/16 3:29:38
教师培训机构考电工证千万别踩坑 你在外省的证能转吗 教师培训机构考电工证千万别踩坑 你在外省的证能转吗 之前考的证在外省能不能转过来?这是很多已经在岗或者正在准备考证的教师培训机构从业者最关心的问题。特别是像信阳浉河区的应届工程类毕业生,刚刚步入职场,对证书的转移、使用范围以及后续的继续教育… · 2026/11/16 3:29:38
临泉县低压电工证怎么考?上岗必备的避坑经验全在这 临泉县低压电工证怎么考?上岗必备的避坑经验全在这 工地太忙根本没时间复习考试,这几乎是每个劳务班组负责人的真实写照。特别是像我们这种常年在外跑工地的,一天到晚被各种项目和进度牵着走,哪还有精力去琢磨那本厚厚的低压电工证教材?但别小看这个【临… · 2026/11/16 3:29:38
曲靖特种工培训多少钱?别怕考不过白交培训费 曲靖特种工培训多少钱?别怕考不过白交培训费 你是不是也这样,好不容易找到一家靠谱的 曲靖特种工培训 机构,交完培训费就怕考试不过,钱打了水漂?别急,我来帮你理清思路,说说这个培训到底值不值,怎么考才不亏。… · 2026/11/16 3:29:38
低压电工证科目二的开关图千万别踩坑 电工找工作必备技能 低压电工证科目二的开关图千万别踩坑 电工找工作必备技能 找电工工作, 低压电工证科目二的开关图 是你必须掌握的内容,不然连面试资格都拿不到。别以为考个证是小事,这关系到你能不能顺利上岗,也关系到你能不能拿到工资。千万别踩坑,一不小心就可能多… · 2026/11/16 3:28:38
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/16 3:21:55
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/16 3:01:18
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
电工证培训的通知在哪考?别再被中介骗了 电工证培训的通知在哪考?别再被中介骗了 你是不是还在为 电工证培训的通知在哪考 发愁?网上搜了一堆信息,结果要么是挂羊头卖狗肉的培训机构,要么就是打着“包过”旗号的骗子?别急,今天我来给你讲讲, 电工证培训的通知… · 2026/11/16 0:00:34
电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 怕考不过白交培训费?你不是一个人,信阳的李师傅去年刚转岗做电工,就因为没搞清楚电工证去哪个部门考核,差点交了8000块的培训费。别急,下面这份实操考试全攻略,告诉你电工证到底值不值得考… · 2026/11/16 0:00:34
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05