用 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 一下就看明白了:
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/snpmmirror 对超过一定体积的 tarball 会返回 302 跳到它自己的 CDN,而这个跳转在我这里跟不动。 pnpm 重试几轮之后连元数据缓存都写坏了,报出一个和真实原因完全无关的 BROKEN_METADATA_JSON。
解决办法很简单,这一次装换直连官方源:
pnpm install --registry=https://registry.npmjs.org40 秒装完。之前二十多分钟已经把 1116 个小包缓存进 store 了,换源之后只需要补那 19 个。
顺带一提,克隆仓库本身也慢——Firefly 仓库带历史有 130MB。直接下 tarball 只有 19MB:
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/相关文章智能推荐
1
把 Agent 用在信息化交付里:方案、交底和预算
企业信息化在镭射沃期间把 GLM、Gemini、Grok、Claude、GPT 用进日常:写建设方案、整理技术文档、做工程预算,以及跟集成商做功能梳理和技术交底。
2
保密产线的网络怎么隔离:分区、准入、访客和审计
企业信息化面向苹果供应链客户的保密产线安保。只写可公开的方法:办公网与产线网怎么分开、终端怎么准入、访客怎么隔离、审计看什么。不写客户工艺、产品线和现场细节。
3
企业 AD 从 0 到 1:域控、终端、证书、无线和 SSO
企业信息化在一家从没有域的制造企业里,把 Active Directory、DNS、证书、SCCM、RADIUS 和 Entra ID 一次铺起来。这篇写边界怎么划、坑在哪,不写客户内网细节。
4
跨境 SD-WAN 和多品牌防火墙:一个总部,四地出口
企业信息化深圳总部辐射越南、香港、韩国、苏州。专线混互联网、策略路由、Fortinet 与 AhnLab 的整合,以及用 Zabbix 把设备纳管和报表先跑起来。
5
人人麻将:从规则状态机到 Android 包的四川血战麻将
项目一个四人实时对战的川麻项目。服务端用 Node.js + Socket.IO 把规则做成纯状态机,客户端用 Cocos Creator 出 H5 和 Android 包,现在跑在自己的 VPS 上。
随机文章随机推荐


