Notes · 2025.11.01
GitHub Pages 和 Jekyll
个人站在这个栈上。
仓库名是 bosprimigenious.github.io。栈是 Jekyll 加 al-folio。我想过把别的站点生成器整个搬进来,看了一眼 GitHub Pages 的限制就停了。能做的是把版式搬过来,内容仍是这些 md。页面生成在这个仓库里完成,不在别的平台的工程文件里完成。我想换栈的时候,通常是看了别人更亮的首页。亮可以学。学完仍要回到:这篇 md 改一个字,4000 端口能看见吗。看不见,亮没有用。看得见,栈就还够。
GitHub Pages 不能把 Framer 工程直接 Remix 进来
Framer 那套对视觉迭代很快。我试过「导出再接 Pages」。接不上。Pages 认的是静态文件或它支持的 Jekyll 构建。Framer 工程不是一份能丢进这个仓库就构建的源。硬接只会留下一堆我改不动的产物。
后来有人建议换 Remix、换别的前端框架当个人站。可以另开仓库。这个仓库的契约是:md 进 _posts 和页面目录,Jekyll 出 HTML。契约改了,域名还在,维护方式就断了。我需要的是能改字的源,不是只能在图形界面里点的源。
版式可以借鉴。Majd 那种首页我看过,2×2 太整齐,后来左右错落。借鉴的是疏密,不是把别人的工程文件提交进来。提交进来的那一刻,许可证、构建、图片路径,全变成我的问题。
本地怎么起
本地命令是 bundle exec jekyll serve --host 127.0.0.1 --port 4000。要 bundle exec,是因为 gem 在这个项目的 bundle 里,不在我随手装的系统路径里。直接 jekyll serve 会碰到版本飘。飘了报的错像插件坏了,其实是执行到另一套 Jekyll。
--host 127.0.0.1 限制在本机。我在实验室网络里不把预览端口敞到别人的浏览器。--port 4000 是习惯,被占了再换。换了要自己记,书签还停在 4000 会以为站点挂了。
构建失败时,我先看刚改的 md 的 front matter,再看插件。YAML 少一行 ---,整站都能红。这个比主题升级常见得多。所以改笔记时不动主题,改主题时少动二十五篇正文。范围拆开,回滚才做得到。
系统 Ruby 不够,用 brew 的 ruby@3.3
这台机器系统 Ruby 是 2.6 一类,跑现在的 al-folio 不够。我用 brew 的 ruby@3.3。PATH 要指对。指错时 ruby -v 仍是旧的,bundle 装的是一套,运行是另一套。这种错看起来像依赖地狱,根因是版本切换没完成。
Ruby 版本一换,bundler 也要跟着。我有过「gem 装上了,bundle 找不到」的下午。后来把命令写进自己的笔记,不写进假设读者系统里已经有 3.3 的 README。读者的机器不是我的机器。
GitHub Pages 的构建环境和本机也不完全一样。本机能起,不等于推上去绿。插件白名单、不允许的 gem,推了才知道。我把必须用的能力尽量压在 Pages 允许的范围内。超出范围的,本地玩玩可以,当正式站点不行。
内容和皮肤的分工
正文在 _posts。皮肤在主题和 _sass、布局。我想换字体、换首页疏密,去皮肤。我想改一句关于 Under Review 的话,去正文。两者一起改,diff 会大到我自己都不审。
照片放 assets/img。用自己拍的。构建不负责把生成模型的脸变真。favicon 后来改成陶土红底的 B,那是另一次小改,和 Jekyll 栈无关,和「这是我的站」有关。
Pages 的发布有延迟。我推完立刻用域名检查,有时看到旧的。旧的不一定是构建失败。等几分钟再看,比立刻回滚配置更少制造新问题。真失败看 Actions,不看感觉。
这个栈的限制我接受
Jekyll 写复杂交互别扭。个人站不需要复杂交互。需要的是:笔记能搜、页面能打开、荣誉和简历对得上。GitHub Pages 免费、和仓库绑在一起,够用。
不够用的时候我会另开项目,不会在这个仓库里塞一个前端应用把 Jekyll 架空。架空一次,md 工作流就死了。这篇笔记的限制是:栈就是 Jekyll 加 al-folio 加 Pages。版式能搬,工程文件不能 Remix 进来。
本机预览绿了,仍要等 Pages 那一次构建。构建日志里出现插件不允许,才是发布端的真失败。真失败不要用本地再起一次来「证明没问题」。本地和远端是两套 Ruby、两套允许列表。我接受这套限制,是因为我需要 md 能改字、照片能对上场合、荣誉能对上 resume.typ。交互可以少。少了的交互,用笔记讲清楚就行。笔记就是这些 _posts。栈为它们服务,它们不为栈的新鲜感让路。
本地 4000 才是验收
改完 md 必须 bundle exec jekyll serve --host 127.0.0.1 --port 4000 打开看。GitHub Pages 上的旧站在没 push 之前不会变。不要对着线上旧页说「没改上」。没改上是因为改在本地。本地端口被旧进程占了,也会看成旧页。启动前先看终端里有没有上一周的 serve。