Skip to content

fix(docs): lazy-load demo source in development - #168

Merged
cc-hearts merged 1 commit into
mainfrom
fix/docs-demo-source-loading
Aug 4, 2026
Merged

fix(docs): lazy-load demo source in development#168
cc-hearts merged 1 commit into
mainfrom
fix/docs-demo-source-loading

Conversation

@cc-hearts

Copy link
Copy Markdown
Member

English template / 英文模板

🤔 本次变更属于 ...

  • 🆕 新功能
  • 🐞 Bug 修复
  • 📝 站点 / 文档改进
  • 📽️ Demo 改进
  • 💄 组件样式改进
  • 🤖 TypeScript 类型定义改进
  • 📦 包体积优化
  • ⚡️ 性能优化
  • ⭐️ 功能增强
  • 🌐 国际化
  • 🛠 重构
  • 🎨 代码风格优化
  • ✅ 测试用例
  • 🔀 分支合并
  • ⏩ 工作流
  • ⌨️ 无障碍改进
  • ❓ 其他(请说明)

🔗 相关 Issue

暂无关联 Issue。

💡 背景与方案

文档开发服务加载 demo 时,vite:demo 插件会在 serve 模式调用仅构建阶段支持的 emitFile()getFileName(),导致 Vite 持续输出插件兼容警告。同时,开发模块会内联完整源码与高亮 HTML,长时间浏览大量 demo 时会增加客户端和开发服务器内存占用。

本次调整统一开发与生产的 loadSource(signal?) 异步接口:

  • 开发环境通过 __demo_source 端点在展开代码时实时解析并返回源码,插件仅合并进行中的重复请求,完成后不保留解析结果。
  • 生产环境继续在构建时生成带 hash 的 demo-source-*.json,保持源码按需加载和现有包体积优化。
  • 折叠代码、切换 demo 或组件卸载时取消未完成请求并释放源码数据。
  • HMR 仅传递版本和 locale 信息,代码面板展开时按版本重新获取源码。
  • emitFile()getFileName() 仅在 build 模式调用。
  • 补充 DemoModuleDemoSourceDataDemoExtraFile 类型约束。

验证结果:

  • vp test:46 个测试文件、463 项测试全部通过。
  • 本次变更文件通过 vp check
  • vp build packages/docs 构建成功,demo-source-*.json 正常生成。
  • 开发环境直接加载 demo 模块和源码端点成功,未再出现 serve-mode 插件兼容警告。

📝 变更日志

语言 变更日志
🇺🇸 英文 Fix Vite serve-mode warnings and load documentation demo source on demand in development.
🇨🇳 中文 修复 Vite 开发模式插件兼容警告,并在开发环境按需加载文档 demo 源码。

@cc-hearts
cc-hearts merged commit 959d87f into main Aug 4, 2026
1 check passed
@cc-hearts
cc-hearts deleted the fix/docs-demo-source-loading branch August 4, 2026 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant