用 Astro + Firefly 搭这个站,以及 pnpm 装不上的真正原因

673 字
3 分钟
用 Astro + Firefly 搭这个站,以及 pnpm 装不上的真正原因

一直想有个地方把自己做过的项目集中放出来,而不是散在几个 GitHub 仓库里。这周把它搭起来了。

选型#

候选了一圈,主要在这几个里挑:

方案印象
Hugo (PaperMod / Stack)最快最稳,但改 Go template 很难受
Next.js (tailwind-nextjs-starter-blog)博客能力最强,但对纯展示站来说重了
Astro (Fuwari / Firefly)默认零 JS,组件化改起来最顺手

最后选 Firefly,它是 Fuwari 的二次开发版,功能补得很全,而且更新非常勤。

选它主要看中两点:一是配置驱动——绝大部分东西在 src/config/ 下改 TypeScript 文件就行,不用碰组件;二是它自带一个「书签导航」页,那个页面的数据结构(分组 + 卡片 + 图标 + 描述)正好就是一个项目展示页需要的形状,我直接把它改造成了项目页,一行组件代码都没改。

装依赖卡了半小时#

这部分值得单独说,因为国内大概率都会遇到。

我的 npm 源是 registry.npmmirror.com,平时很好用。但 pnpm install 跑了二十多分钟,1135 个包里有 19 个死活装不上,报的都是同一个错:

[WARN] GET https://registry.npmmirror.com/typescript/-/typescript-6.0.3.tgz error (23)
[WARN] GET https://registry.npmmirror.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz error (23)
[WARN] GET https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz error (23)
...
✗ Lockfile failed supply-chain policy check
[ERR_PNPM_BROKEN_METADATA_JSON] The operation was aborted due to timeout

注意失败的全是大包:typescript、sharp、esbuild、wrangler、workerd、biome、pagefind、lightningcss。小包一个没出问题。

直接 curl 一下就看明白了:

Terminal window
curl -o /dev/null -w "%{http_code} %{speed_download}\n" \
https://registry.npmmirror.com/typescript/-/typescript-6.0.3.tgz
# 302, 55 B/s
curl -o /dev/null -w "%{http_code} %{speed_download}\n" \
https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz
# 200, 786029 B/s

npmmirror 对超过一定体积的 tarball 会返回 302 跳到它自己的 CDN,而这个跳转在我这里跟不动。 pnpm 重试几轮之后连元数据缓存都写坏了,报出一个和真实原因完全无关的 BROKEN_METADATA_JSON

解决办法很简单,这一次装换直连官方源:

Terminal window
pnpm install --registry=https://registry.npmjs.org

40 秒装完。之前二十多分钟已经把 1116 个小包缓存进 store 了,换源之后只需要补那 19 个。

顺带一提,克隆仓库本身也慢——Firefly 仓库带历史有 130MB。直接下 tarball 只有 19MB:

Terminal window
curl -L -o firefly.tar.gz \
https://github.com/CuteLeaf/Firefly/archive/refs/heads/master.tar.gz

改了什么#

  • 关掉了主题自带的追番、VNDB、AnimeList、相册、友链、留言、打赏页,只留博客 + 项目 + 关于
  • 把「书签导航」改造成项目页,导航栏提到顶级
  • 换掉横幅文案、logo、站点信息
  • 把主题默认引用的作者 CDN 背景视频去掉了——那是别人的带宽

还没做的#

  • 换成履历用的头像和机房横幅
  • 把站点改成简历的项目附录,补上企业信息化案例
  • 补每个项目的封面图
  • 部署到 Cloudflare Pages

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

用 Astro + Firefly 搭这个站,以及 pnpm 装不上的真正原因
https://dr.free--china.com/posts/building-this-site/
作者
董锐
发布于
2026-09-02
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
董锐
网络 / 系统工程师。身份底座、跨境网络、信息化交付。
公告
这是项目履历站,配合简历看。中英文 PDF 在「关于我」页可下载。
分类
标签
站点统计
文章
8
分类
3
标签
35
总字数
7,284
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.6
文章许可
CC BY-NC-SA 4.0