1970 字
10 分钟
NieBlog 项目维护指南

NieBlog 项目维护指南#

本文档面向博客的日常维护者,说明项目结构、文件规范,以及「发布文章」「上传图片」「部署更新」的完整操作流程。 技术栈:Astro(静态站点)+ Fuwari 模板 + Tailwind CSS + EdgeOne Pages 部署 + Waline 评论。


一、目录结构总览#

NieBlog/
├── public/ # 静态资源(原样复制到网站,无需编译)
│ ├── assets/ # ★ 站点图片(文章封面、壁纸、Banner 等)
│ ├── gallery/ # ★ 图库照片(没有可自建此目录)
│ ├── favicon/ # 网站图标
│ └── .well-known/ # 域名验证文件(勿动)
├── src/ # 网页源代码
│ ├── content/
│ │ ├── posts/ # ★ 文章目录(Markdown 文件,一篇一个 .md)
│ │ ├── spec/ # 「关于」等特殊页面(about.md)
│ │ └── weekly/ # 周刊数据(自动聚合,一般不动)
│ ├── pages/ # 路由页面(文件名即网址)
│ │ ├── [...page].astro # 首页(含统计仪表盘+时间线)
│ │ ├── archive.astro # 归档页
│ │ ├── about.astro # 关于页
│ │ ├── friends.astro # 友链页
│ │ ├── gallery.astro # 图库页
│ │ ├── guestbook.astro # 留言板
│ │ ├── hubs.astro # 专题页
│ │ ├── weekly.astro # 周刊页
│ │ └── posts/[...slug].astro # 文章详情页模板(自动带评论区)
│ ├── components/ # 页面组件
│ │ ├── widget/ # 侧边栏组件(音乐播放器、重要提醒、公告等)
│ │ ├── control/ # 控件(分页、返回顶部等)
│ │ ├── misc/ # 通用小组件(图片包装等)
│ │ └── *.astro # Navbar 导航栏、Footer 页脚、PostCard 文章卡片等
│ ├── layouts/ # 页面骨架(Layout.astro 全局 / MainGridLayout 主布局)
│ ├── config.ts # ★ 站点配置(标题、建站日期、导航栏、横幅等)
│ ├── styles/ # 全局样式
│ ├── constants/ # 常量(颜色、尺寸)
│ ├── utils/ # 工具函数(文章排序、URL 处理)
│ ├── i18n/ # 多语言文案
│ └── types/ # 类型定义
├── dist/ # 构建产物(自动生成,勿手动改)
├── astro.config.mjs # Astro 构建配置
├── package.json # 依赖与脚本命令
└── PROJECT_GUIDE.md # 本文档

带 ★ 的是日常维护最常打交道的三个位置:public/assets/(图片)、src/content/posts/(文章)、src/config.ts(站点配置)。


二、图片文件规范#

1. 存放路径#

用途路径说明
文章封面图public/assets/在文章 frontmatter 里引用
网站壁纸public/assets/文件名 wallpaper-1.jpgwallpaper-2.jpg(导航栏调色板里引用)
网站横幅public/assets/src/config.tsbanner.src 指定
图库照片public/gallery/目录不存在就新建一个

2. 命名规范#

  • 只用小写英文 + 数字 + 连字符,禁止中文、空格、大写字母
    • 推荐:cover-my-blog-road.jpggallery-2026-09-01.jpg
    • 不推荐:我的封面.JPGScreen Shot 2026.png
  • 文章封面建议统一前缀:cover-<文章文件名>.jpg,方便对应查找
  • 图片格式:优先 .jpg / .webp(截图可用 .png);单张建议 小于 500KB,宽度 1200px 左右即可

3. 如何在文章中使用图片#

---
title: 文章标题
published: 2026-09-01
image: /assets/cover-my-blog-road.jpg # 必须以 /assets/ 开头(对应 public/assets/)
---
  • 注意是 /assets/... 而不是 public/assets/...public 目录在网址里不出现)
  • 不填 image 字段时,首页卡片会自动生成一张紫蓝渐变的 SVG 封面,标题会写上去,不用害怕没图

三、文章文件规范#

1. 存放位置与文件名#

  • 所有文章放在 src/content/posts/一个 .md 文件 = 一篇文章
  • 文件名就是文章网址,所以必须用英文:
    • hello-my-friend.md → 网址 https://niezhenhaoblog.cc.cd/posts/hello-my-friend/
    • 文件名一旦发布就不要再改,否则网址会变

2. 文件格式(frontmatter + Markdown 正文)#

每个 .md 文件开头必须有一段 --- 包裹的配置(frontmatter),然后是正文:

---
title: 这里是文章标题
published: 2026-09-01
description: 一两句话的摘要,显示在首页卡片和搜索里
tags: [标签1, 标签2]
category: 分类名
image: /assets/cover-xxx.jpg # 可选,不填自动生成渐变封面
draft: false # true = 草稿,网站上不显示
---
正文从这里开始,正常写 Markdown 即可:
## 二级标题
普通文字,**加粗***斜体*,[链接](https://example.com)
![图片说明](/assets/xxx.jpg)

字段说明:

字段必填说明
title✅ 必填文章标题
published✅ 必填发布日期,格式 2026-09-01(首页时间线按它排序)
description可选摘要,建议写
tags可选标签数组
category可选分类(专题页 hub 会自动归组)
image可选封面图路径
draft可选true 为草稿,不显示在网站
updated可选更新日期

⚠️ frontmatter 格式错误会导致构建失败(比如 published 少写、--- 没配对)。写完不确定就先跑一次本地构建(见第五节)。


四、操作指南#

A. 发布一篇新文章(最常用)#

  1. 新建文件:在 src/content/posts/ 下新建一个英文文件名的 .md,例如 my-new-post.md
  2. 填写 frontmatter + 写正文(参考上面第三节格式)
  3. 提交并推送:在项目根目录打开终端(PowerShell),依次执行:
Terminal window
npm run build
git add .
git add src/content/posts/my-new-post.md
git commit -m "post: 新文章 标题"
git push

如果很久没推送,提示冲突:先执行

git pull --rebase origin main
  1. 等待自动部署:推送后 EdgeOne 会自动拉取代码并构建,大约 5 分钟生效
  2. 刷新网站:打开 https://niezhenhaoblog.cc.cd/ 确认文章出现;没变化就按 Ctrl + F5 强制刷新

一条命令也行(新文章+图片一起发):

Terminal window
git add .; git commit -m "post: 新文章 标题"; git push

B. 给文章配封面图#

  1. 把图片放进 public/assets/,命名为 cover-<文章名>.jpg
  2. 在文章 frontmatter 加一行:image: /assets/cover-<文章名>.jpg
  3. 图片和文章可以一起 git add . 推送

C. 图库页添加照片#

  1. 把照片放进 public/gallery/(目录没有就新建)
  2. 打开 src/pages/gallery.astro,在顶部数组里照格式加一行:
const photos = [
{ src: "/gallery/2026-09-01.jpg", title: "照片说明", date: "2026-09-01" },
];
  1. 推送后等自动部署

D. 修改网页内容 / 样式后的部署#

  1. 直接修改对应的源码文件(改前建议备份或记住改了什么)
  2. (可选)本地预览确认效果:
Terminal window
npm run dev # 启动本地开发服务器,浏览器打开提示的 http://localhost:4321
# 按 Ctrl + C 停止
  1. 提交推送:
Terminal window
git add .; git commit -m "style: 改了什么简短说明"; git push
  1. 等 EdgeOne 自动构建(约 5 分钟),Ctrl + F5 刷新网站验证

E. 常用命令速查#

命令作用
npm run dev本地实时预览(改代码即时生效,最推荐调试用)
npm run build本地完整构建(验证能不能部署成功,产物在 dist/
npm run preview预览 dist/ 构建产物
git add .暂存所有改动
git commit -m "说明"创建提交
git push推送到远程 → 触发 EdgeOne 自动部署

F. 出问题了怎么办#

现象排查方法
推送后网站没更新1. 等 5-8 分钟;2. Ctrl + F5 强刷;3. 登录 EdgeOne 控制台看构建状态
构建失败(EdgeOne 显示失败)本地跑 npm run build 复现真实报错(90% 是 frontmatter 写错或路径引用错)
新文章没出现检查文件是否在 src/content/posts/、frontmatter 是否有 titlepublished、是否写了 draft: true
图片不显示检查 frontmatter 里是否写成了 /assets/...(不能带 public)、文件名大小写是否完全一致
评论加载慢/不出刷新一次(冷启动),还不行看Waline 服务状态

五、注意事项#

  1. 文件名纪律:文章文件名、图片文件名一律小写英文 + 连字符;发布后的文章文件名不再修改
  2. 不要手动改dist/(构建产物)、pnpm-lock.yaml(依赖锁)、.astro/(缓存)
  3. 敏感信息:不要把密钥、密码写进任何被提交的文件
  4. 站点基础信息(标题、建站日期、导航栏、横幅开关)集中在 src/config.ts,改完同样走「提交 → 推送 → 自动部署」流程
  5. 建站天数:页脚和首页仪表盘的「运行 X 天」由 config.tssince 字段计算,页面每次打开都会实时算,不会滞后
NieBlog 项目维护指南
https://niezhenhaoblog.cc.cd/posts/project-guide-fb/
作者
星沐
发布于
2026-09-02
许可协议
CC BY-NC-SA 4.0
阅读 ...
评论