主要是静态web搭建,需求是将markdown转为静态web,并且自动兼容各种assets资源。
当前采用的方案是 obsidian + quartz + git + github pages方案,部署的话除了使用github pages还有个人服务器+nginx方案,流程如下。
1 obsidian端
obsidian主要约定如下配置:
创建templates文件夹存放模板,模板中文档属性需要设置draft为true,防止被发布:
2 quartz
💻源码地址:jackyzha0/quartz: 🌱 a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites (github.com)
配置流程
🌐官方文档:Welcome to Quartz 4 (jzhao.xyz)
✨requirement:Quartz requires at least Node v20 and npm
v9.3.1
安装Node.js
🌐官网:Node.js — 在任何地方运行 JavaScript (nodejs.org)
windows上推荐使用winget+fnm安装,方便管理版本,当然没有其他版本需求的话使用msi预构建安装程序直接安装也可(卸载也通过这个或者找到系统node创建的开始菜单卸载脚本)。
winget+fnm
:
quartz构建
quartz使用
随后在content中编辑内容,可以把content文件夹作为仓库使用obsidian打开。内容修改好后使用quartz编译即可。
在quartz.config.ts简单配置一下忽略文件夹如.git和baseUrl
baseUrl: "betteryimi.top",
ignorePatterns: ["private", "templates", ".obsidian", ".git"],
编译markdown主要用到的指令是build
,即(默认)将content文件夹中的markdown文件转化为html到public文件夹,同时根据配置添加布局、样式之类的:
在这之前有几处小修改:
✨font加载阻塞(是google font,有的网络环境有问题)
- 全局搜索
fonts.googleapis.com
改为fonts.loli.net
.
✨点击代码框copy按钮复制到剪切板
- 由于浏览器的限制,没有证书的网站会不允许navigator.clipboard.writeText一键复制到粘贴板,需要退回到其他方式。主要修改
quartz\components\scripts\clipboard.inline.ts
发布
将public文件夹关联到远程仓库并且push,如果使用github pages
则需要上传到指定的仓库,并且设置好需要展示的分支,整体流程如下:
为了免除每次git push都需要手动验证,可以采用ssh形式或者配置好github的密钥,修改系统的验证方式为store(首次需要手动登录).
git config --system credential.helper store
✨个人服务器搭建的话可以pull仓库下来然后使用nginx创建web服务,见nginx
可以编写脚本一键完成build和push: