项目信息

用于发布 Obsidian 的项目 quartz 更新到 5.0 版本了,增加了许多功能,插件自定义能力感觉也显著增强了。

其中比较在意的是支持展示 Obsidian 笔记属性了,还有对 Obsidian Bases 的支持,虽然对 Bases 的兼容使用上仍然有些问题。

升级踩坑

从 4.X 迁移到 5.0 的过程可以参考 Migrating to Quartz 5

主要流程是:

  1. 从上游 git 仓库复制 V5 分支到本地仓库
  2. 安装 npm 依赖并运行 npx quartz create 进行配置初始化
  3. 将之前 V4 或 V3 的配置(quartz.config.tsquartz.layout.ts)手动迁移到 V5 新版的 quartz.config.yaml 配置文件中

笔记属性展示

Frontmatter

给 note-properties 插件配置 includeAll 即可展示所有笔记的属性。

关于构建

我在 package.json 中配置了 scripts.build 脚本,然后执行 build 总是报错,本地启动 serve 却没问题。

最后发现是因为里面有个 scripts.prebuild 会在 build 之前执行导致构建报错。因此我将这个 prebuild 命令删掉来解决 build 失败。

Vercel 发布后访问页面出现 404

我有一个 deploy 脚本,用于将网站构建产物 public/ 目录复制到在 gh-pages 分支上 git worktree 中,然后提交并推送到远端仓库,这会自动触发 Vercel 重新发布网站。

但是升级 5.0 之后访问目录下的笔记会 404 找不到。排查很久才想起来更新日志中提到将路径的英文大小写全部统一成小写了。

而 MacOS 上使用 git 提交会忽略目录或文件的大小写差异,所以导致增量提交产物到 gh-pages 分支时里面的路径仍然是老的有大小写字母的。因此跳转访问原本包含大写字母路径时,新版 5.0 跳转 url 路径全是小写字母,但是 git 提交中仍然是大小写混杂的路径,最终导致 Vercel 找不到文件返回 404。

解决方法也很简单,先在 gh-pages 分支里删除所有文件并提交,然后再重新跑 deploy 脚本提交最新构建产物。

其它未解决问题

  1. 启用 bases 插件后,不会为 base 文件生成对应的 base 页面,笔记中内联 bases 代码块能正常转换渲染
  2. 支持了 excalidraw 插件,但是它不支持指定 publish 属性来选择性发布
  3. 想使用 bases 插件替换现有 dataview 的一些公开视图(发布前需要使用 dataview-publisher 生成最新视图内容),但是查询笔记的修改时间有问题