尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何写出稳如磐石的插件:DSH-better-sidebar的CI挂载冒烟、消费方类型守卫与npm发版流水线

如何写出稳如磐石的插件:DSH-better-sidebar的CI挂载冒烟、消费方类型守卫与npm发版流水线 如何写出稳如磐石的插件DSH-better-sidebar的CI挂载冒烟、消费方类型守卫与npm发版流水线【免费下载链接】DSH-better-sidebar开放的侧边栏底座支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git, and sub-agent pages.项目地址: https://gitcode.com/gh_mirrors/ds/DSH-better-sidebarDSH-better-sidebar是面向 DSH 的开放侧边栏底座内置文件渲染编辑、终端、侧边对话、Git、子代理页面并支持三方扩展通过ctx.betterSidebar注册新的侧边栏页面。插件的稳不只靠本地测试——本文拆解它如何用CI 挂载冒烟、消费方类型守卫与npm 发版流水线三道工程门禁保证打包产物挂载不崩溃、对外类型契约不腐化、发版可信可追溯。先搞清楚插件的稳到底稳在哪插件不是独立应用而是挂载在宿主DSH上运行的扩展。风险点集中在三处门禁守护什么关键文件️ CI 挂载冒烟npm 打包产物在真实 DSH 上挂载后不崩溃scripts/e2e-mount.sh️ 消费方类型守卫浏览器消费方能正确使用全部公开类型scripts/check-consumer-types.sh npm 发版流水线版本号、门禁顺序、来源溯源全部可信.github/workflows/release.yml本地pnpm test跑的是源码但用户装进 profile 的是 tarball——打包产物与源码之间隔着构建、依赖解析、宿主挂载三层鸿沟。DSH-better-sidebar 的底座能力如 Git 面板的仓库/分支选择就经受过这种真机验证门禁一CI 挂载冒烟——验证包而不是源码冒烟流水线 scripts/e2e-mount.sh 分三步全程模拟真实用户路径打包pnpm build pnpm pack产出与 npm 发布一致的 tarball真实挂载用官方 CLI 把 tarball 装进全新的一次性 scratch profile与用户dsh plugin add同一通道并校验挂载确实注册成功无头渲染启动真实dsh webPlaywright Chromium 打开页面——断言侧边栏外壳挂载、无错误条、无 pageerror再逐个打开内置 tab 类型含终端的懒加载 chunk经文件树打开 seed 文件强制加载编辑器 chunktests/e2e/mount.e2e.ts。几个值得抄的设计细节隔离scratch home 每次全新创建、trap 兜底清理绝不触碰真实~/.dsh️命名双保险e2e 用例统一命名*.e2e.tsvitest 侧再exclude一次防止单测误收整条浏览器链路确定性playwright.config.ts 设retries: 0、单 worker、单浏览器——冒烟就是崩溃探针重试会掩盖回归真机教训写进仓库规则钉版必须是已完整发布的版本、必要时加NODE_OPTIONS--max-old-space-size4096防 OOM、不要加--legacy-peer-deps它会跳过全局安装必须提供的 peerCLI 直接报模块缺失。这些踩坑-修复记录沉淀在 AGENTS.md 第 2 节后来者不用重复踩。门禁二消费方类型守卫——类型正确也是可测试的承诺插件对外暴露registerTab/registerFileViewer等注册 API28 生态插件都是类型消费方。我仓库里 tsc 通过不等于消费方也能用——常见问题是声明文件悄悄引入了types/node或只在本仓库依赖树里能解析。scripts/check-consumer-types.sh 的解法很直接构造一个最小浏览器消费方——无types/node、skipLibCheck: false——对构建出的lib/types做类型检查两遍跑法第一遍skipLibCheck: true模拟真实消费方体验必须完全干净第二遍skipLibCheck: false严格模式——仅当错误指向本包自己的声明面时才判失败上游依赖的存量噪音被过滤不放大误报。这样类型契约从口头约定变成了 CI 里的一条绿线任何让浏览器消费方编译失败的改动都会在 CI 校验作业 中被拦下校验顺序与发版流水线完全一致typecheck → lint → test → build → check:consumer-types。门禁三npm 发版流水线——零 token 的可信发布.github/workflows/release.yml 由 GitHub ReleasetagvX.Y.Z触发流程四步前置校验tag 必须与package.json版本精确匹配不匹配直接失败全套门禁install → typecheck → lint → test → build → 消费方类型守卫可信发布pnpm publish --provenance --access public——认证走npm Trusted PublishingOIDC仓库里没有任何NPM_TOKEN机密产物自带来源溯源dist-tag 分流版本号含-预发布发到alpha标签稳定版才发latest——稳定用户永远不会被预发布版污染。需要演练又不想真发workflow_dispatchdry_runtrue会走完全部打包与校验但跳过 publish排错成本几乎为零。稳定性清单你可以直接抄走✅ 冒烟测打包产物而非源码pack → 官方安装通道 → 真实宿主 → 无头渲染断言✅ 对外类型面单独设一道浏览器消费方类型检查门禁✅ 发版流水线强制 tag 与版本一致、门禁顺序与 CI 对齐、OIDC 免 token 发布、预发布走独立 dist-tag✅ 用make check一条命令聚合本地门禁Makefiletypecheck → lint → build → test → check:consumer-typesmake mount一键跑真机冒烟✅ 踩坑结论写进仓库规则文档而不是留在 CI 的红色日志里。想给这个底座写插件完整接入参考Tab / FileViewer 全字段、声明式设置、皮肤契约见官方文档 docs/external-plugin-guide.md仓库开发规则与 CI 说明见 AGENTS.md。【免费下载链接】DSH-better-sidebar开放的侧边栏底座支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git, and sub-agent pages.项目地址: https://gitcode.com/gh_mirrors/ds/DSH-better-sidebar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表