用途
Bookshop 是 CloudCannon 早期的组件系统,由三部分组成:组件库、一个生成编辑器结构的构建步骤,以及一个在可视化编辑器中重新渲染组件的实时编辑引擎。其后继方案是可编辑区域(editable regions)。本技能覆盖三个方向的工作:阅读 Bookshop 站点、维持 Bookshop 站点继续运行,以及将站点迁离 Bookshop。
何时使用
- 站点出现「检测 Bookshop」中列出的任一信号时
- 需要在 Bookshop 站点上添加或修改组件时
- 需要将 Bookshop 站点迁移到可编辑区域时
- Bookshop 实时编辑、结构或构建出现异常时
何时不使用
- 站点没有任何 Bookshop 信号 —— 应改用 cloudcannon-visual-editing。不得向没有 Bookshop 的站点添加 Bookshop;新组件编辑一律使用可编辑区域。
- Bookshop 已移除、仅剩区域 —— 属于 cloudcannon-visual-editing 的范畴,包括其故障排查。
- 与组件无关的配置 —— 属于 cloudcannon-configuration。
检测 Bookshop
出现以下任一信号即表示站点使用了 Bookshop:
bookshop/bookshop.config.{js,cjs}文件位于component-library/(Hugo、Jekyll、Eleventy)或src/(Astro)- 每个组件旁的
*.bookshop.{yml,yaml,toml,json,js,cjs}文件,位于component-library/components/或src/components/ package.json的 dependencies 或 devDependencies 中存在@bookshop/*包.cloudcannon/postbuild中存在npx @bookshop/generate- Front matter(通常在
content_blocks下,有时也在组件代码中)存在_bookshop_name键 - SSG 的 Bookshop 插件、模块或集成,及其模板调用(见站点配置与布局,参考该 SSG 的 bookshop.md)
SSG 支持与迁移判断
迁移的条件是:可编辑区域能够重新渲染该 SSG 的组件。否则站点应继续留在 Bookshop。
- Astro:
@bookshop/astro-engine,可迁移 - Hugo:
@bookshop/hugo-engine,可迁移 - Eleventy:
@bookshop/eleventy-engine,可迁移 - Jekyll:
@bookshop/jekyll-engine,继续留在 Bookshop —— 可编辑区域目前尚无 Jekyll 组件支持
维护或迁移的选择依据用户意图:
- 用户只想添加或修改组件:走 maintaining.md,不要擅自启动迁移
- 用户希望在标记为「可迁移」的 SSG 上离开 Bookshop:走 migrating-to-editable-regions.md
- 用户希望在标记为「保留」的 SSG 上离开 Bookshop:说明目前尚不可行,建议 maintaining.md
- 站点正被迁移到 CloudCannon(migrate-to-cloudcannon):在该迁移流程的阶段内执行迁移
- 意图不明确:先询问。迁移会重写每个组件与页面布局。
内容结构
- SKILL.md:检测、SSG 支持、路由
- bookshop.md:Bookshop 工作原理 —— 库布局、
*.bookshop.yml、@bookshop/generate、实时编辑、绑定 - maintaining.md:修改继续留在 Bookshop 的站点
- migrating-to-editable-regions.md:迁移步骤顺序、从
*.bookshop.yml生成结构、_bookshop_name重命名、移除 Bookshop - troubleshooting.md:症状 → 原因 → 修复,覆盖 Bookshop 站点及迁移过程中的问题
SSG 专属文档(Astro、Hugo、Eleventy 各有 overview.md)给出对应 SSG 的阅读顺序。
相关技能:迁移期间阅读 cloudcannon-visual-editing(区域、普查与完整性检查清单);阅读 cloudcannon-configuration(编写与校验替代自动生成结构的 _structures);使用 cloudcannon-dev-server(让用户在本地编辑器中试用迁移后的站点)。
常见错误
- 「这是 Bookshop 站点,所以我把它迁移掉」:只有用户明确要求且 SSG 标记为可迁移时才迁移。Bookshop 站点上的组件修改就是 Bookshop 修改。
- 「这个新组件可以用可编辑区域」:在继续留在 Bookshop 的站点上,新组件是 Bookshop 组件,见 maintaining.md 的「添加组件」一节。