由于您已在本地安装了 Quartz,无需再次 fork 或克隆仓库。只需检出 alpha 分支,安装依赖项,然后导入旧仓库即可。

git fetch
git checkout v4
git pull upstream v4
npm i
npx quartz create

如果你遇到类似 fatal: 'upstream' does not appear to be a git repository 的错误,请确保已将 upstream 添加为远程仓库:

git remote add upstream https://github.com/jackyzha0/quartz.git

运行 npx quartz create 时,系统会提示您如何初始化内容文件夹。在此处,您可以选择导入或链接之前的内容文件夹,Quartz 将如预期般正常工作。

Note

如果您希望使用的现有内容文件夹位于不同分支的_相同_路径,请在其他位置_不同_路径重新克隆仓库以使用该文件夹。

主要变更

  1. 移除 Hugo 和 hugo-obsidian:Hugo 在早期版本的 Quartz 中表现良好,但也使得非 Golang 和 Hugo 社区的用户难以完全理解 Quartz 的内部运作机制,并无法根据需求进行定制。Quartz 4 现在采用基于 Node 的静态站点生成流程,这将带来更友好的错误提示和整体更流畅的用户体验。
  2. 完全热重载hugo-obsidian 与 Hugo 集成的诸多问题导致监视模式无法重新触发 hugo-obsidian 更新内容索引。这造成了许多监视模式输出不准确的异常情况。Quartz 4 现在采用统一的解析、过滤和输出管道,每次变更都会触发该流程,确保热重载始终准确。
  3. 用 JSX 替代 Go 模板语法:Quartz 3 使用 Go 模板创建页面布局。然而,该语法在处理复杂渲染(如文本处理)时表现欠佳,且对 Quartz 3 进行重大布局调整非常困难。Quartz 4 使用名为 JSX 的 JavaScript 语法扩展,允许您编写类似 HTML 的布局代码,显著提升了可理解性和可维护性。
  4. 全新的可扩展配置插件系统:Quartz 3 在不了解 Hugo 局部模板技术细节的情况下难以配置。扩展功能更是难以实现。Quartz 4 的配置和插件系统专为用户扩展设计,同时使升级到新版本 Quartz 更加便捷。

需要更新的内容

  • 您需要更新部署脚本。详情请参阅托管指南。
  • 确保 GitHub 上的默认分支从 hugo 更新为 v4
  • 文件夹与标签列表也发生了变化。
    • 文件夹描述应放置在 content/<文件夹名称>/index.md,其中 <文件夹名称> 是文件夹的实际名称。
    • 标签描述应放置在 content/tags/<标签名称>.md,其中 <标签名称> 是标签的实际名称。
  • Quartz 3 和 Quartz 4 之间的 HTML 布局可能有所不同。如果您依赖特定的 HTML 层级结构或类名,可能需要更新自定义 CSS 以反映这些变化。
  • 如果您曾定制 Quartz 3 的布局,可能需要将这些修改从 Go 模板转换为 JSX,因为 Quartz 4 不再使用 Hugo。关于组件定制,请查阅创建组件指南获取详细信息。