870 字
4 分钟
部署这个博客的完整过程

这篇文章记录本站从零到上线(以及持续更新)的完整过程,作为一份可复现的操作手册。

技术选型#

部分选择理由
框架Astro + Svelte 5静态生成、零后端、构建快
主题ShironeMaterial 3 Expressive 风格,内置 i18n / 番剧 / 音乐 / 搜索
托管Cloudflare Pages ×2免费、全球 CDN、流量不计量、同一账号两个项目
番剧数据Bangumi API(api.bgm.tv)主题自带同步脚本,UID 781647
歌单Meting API(网易云)主题自带,只需填歌单 id

全部免费,无域名、无服务器、无数据库。

1. 环境准备#

本机需要 Node.js 22.12+(本教程用 v24),包管理器用 pnpm(由 Node 自带的 corepack 提供):

Terminal window
node -v # v24.19.0
corepack enable pnpm
corepack pnpm -v # 9.x

2. 拉取主题并安装依赖#

Terminal window
git clone https://github.com/LyraVoid/Shirone.git
cd Shirone
corepack pnpm install

3. 本地预览(写文章时的核心工作流)#

Terminal window
corepack pnpm run dev

浏览器打开 http://localhost:4321,修改 src/content/posts/ 下的 md 文件会热更新,这就是”即时预览”。

4. 站点配置#

主要配置在 src/config/ 目录(TS 文件,带详细注释):

  • siteConfig.ts —— 站点名、lang、主题色、时区
  • profileConfig.ts —— 头像、名称、社交链接(GitHub / Steam 图标跳转)
  • animeConfig.ts —— 番剧数据源与 Bangumi UID
  • musicConfig.ts —— 音乐播放器歌单(Meting)
  • navBarConfig.ts、sidebarConfig.ts —— 导航与侧栏

语言默认 en,改成中文:

src/config/siteConfig.ts
lang: "zh_CN",
timeZone: "Asia/Shanghai",

社交链接(去掉了 Twitter,换成自己的 GitHub 与 Steam 个人页):

src/config/profileConfig.ts
links: [
{ name: "Steam", icon: "fa6-brands:steam", url: "https://web.xiaoheihe.cn/..." },
{ name: "GitHub", icon: "fa6-brands:github", url: "https://github.com/TsangAsuna" },
],

5. 双语言:两套构建两套部署#

主题的 i18n 是构建期编译的,所以”中文切换”实际是两个静态站点:中文站 tsangasuna.pages.dev、英文站 tsangasuna-en.pages.dev,顶栏按钮互相跳转。构建时用环境变量控制语言:

Terminal window
# 中文站
$env:PUBLIC_ALT_LANG_URL = 'https://tsangasuna-en.pages.dev'
corepack pnpm run build
Move-Item dist dist-zh
# 英文站
$env:PUBLIC_LANG = 'en'
$env:PUBLIC_ALT_LANG_URL = 'https://tsangasuna.pages.dev'
corepack pnpm run build
Move-Item dist dist-en

坑:Move-Item 而不是 Copy-Item —— Copy-Item 到已存在的目录会嵌套成 dist/dist/,部署的是旧版。

6. 部署到 Cloudflare Pages#

Terminal window
# 项目名不允许大写
npx wrangler pages project create tsangasuna --production-branch main
npx wrangler pages project create tsangasuna-en --production-branch main
npx wrangler pages deploy dist-zh --project-name tsangasuna --branch main --commit-dirty=true
npx wrangler pages deploy dist-en --project-name tsangasuna-en --branch main --commit-dirty=true

部署完即得 https://tsangasuna.pages.dev。Pages 免费档:请求 10 万/天,流量不计量。

7. 同步 Bangumi 追番#

主题自带 anime:sync 脚本。先在 animeConfig.ts 打开快照模式:

source: { kind: "snapshot", provider: "bangumi" },
providers: { bangumi: { enable: true, userId: "781647" } },

然后同步(注意 api.bgm.tv 国内直连不通,需要走代理):

Terminal window
$env:HTTPS_PROXY = 'http://127.0.0.1:10808'
$env:NODE_USE_ENV_PROXY = '1'
corepack pnpm run anime:sync --provider bangumi

结果写入 src/data/anime-snapshots/bangumi.json(本博客同步到 372 部),构建时静态渲染,无需后端。

8. 换音乐播放器歌单#

src/config/musicConfig.ts
meting: {
server: "netease",
type: "playlist",
id: "6941867750",
},

歌单走 api.injahow.cn/meting 公开 API 解析,客户端异步拉取。

9. 写新文章并发布#

Terminal window
corepack pnpm new-post -- my-new-post
# 生成 src/content/posts/my-new-post.md

frontmatter 字段:

---
title: 文章标题
published: 2026-09-15
description: 摘要
tags: [标签A, 标签B]
category: 分类
draft: false
lang: ''
---

正文就是 Markdown,代码块用围栏语法自动高亮(本主题内置 Expressive Code):

```powershell
corepack pnpm run build
```

图片放进 public/ 或文章同目录,用相对路径引用。

发布 = 重复第 5、6 步:构建两站 → 部署两站。本机没有环境时,把整个流程交给 GitHub Actions 跑 workflow_dispatch 也可以。

10. 验证#

Terminal window
# 检查两个站都 200
curl -I https://tsangasuna.pages.dev
curl -I https://tsangasuna-en.pages.dev

corepack pnpm run check(astro check)保证代码与配置零类型错误;anime:sync 保证番剧快照新鲜。

部署这个博客的完整过程
https://tsangasuna.pages.dev/posts/deploy-blog/
作者
TsangAsuna
发布于
2026-09-15
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取