Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
204 changes: 1 addition & 203 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,203 +1 @@
# 纸鹿摸鱼处

[![框架](https://img.shields.io/badge/框架-Nuxt-00DC82?logo=Nuxt.js)](https://nuxt.com/)
[![CMS](https://img.shields.io/badge/CMS-Nuxt%20Content-00DC82?logo=Nuxt.js)](https://content.nuxt.com/)
[![部署平台](https://img.shields.io/badge/部署平台-Vercel-000000?logo=Vercel)](https://vercel.com/)
[![访问统计](https://img.shields.io/badge/访问统计-Umami-000000?logo=Umami)](https://github.com/umami-software/umami)
[![代码风格](https://img.shields.io/badge/代码风格-ESLint-4B32C3?logo=ESLint)](https://eslint.org/)
[![代码风格](https://img.shields.io/badge/代码风格-Stylelint-263238?logo=Stylelint)](https://stylelint.io/)

我的第三代个人博客,于 2024 年 8 月 11 日上线。

## 耻辱柱 / Hall of Shame

> [!CAUTION]
> - 部署前必须完成项目个性化配置与内容修改,不得将我的信息用于你的网站图标/名称,严禁将项目内我的文章以你的名义重新发布至公开环境。
> - 部署前必须完成项目个性化配置与内容修改,不得将我的信息用于你的网站图标/名称,严禁将项目内我的文章以你的名义重新发布至公开环境。
> - 部署前必须完成项目个性化配置与内容修改,不得将我的信息用于你的网站图标/名称,严禁将项目内我的文章以你的名义重新发布至公开环境。

近期 Fork 项目后将我的文章部署在互联网且不遵守 CC 协议的行为增加,追查耗费了我巨大精力,因此我将直接将侵权网站列在下方,希望能减少此类现象的发生。

<!-- 1. 2025-12-05 [钟神秀](https://github.com/zsxcoder/Nuxt-blog-v3):blog.zsxcoder.top《我们的设备被拿来做了什么:软件的背景行为》 -->
<!-- 2. 2025-12-28 [Axel Beta](https://github.com/ErenAxel/blog-v3):sc.axel.xin《我们的设备被拿来做了什么:软件的背景行为》《深色模式开发的最佳实践》《寻不回手工油糕》 -->

## 使用本主题的博客

> [!WARNING]
>
> 修改本项目需要具备**前端开发**和**项目部署**能力。由于这是个人博客,代码经过深度定制,且可能会进行较大幅度的更新,建议您 Fork 后安心使用自己分支的版本;若需引入上游(本仓库)的新功能,建议重新 Fork 最新代码,以避免同步冲突。
>
> 如果需要协助或有问题咨询,欢迎加入 QQ 群 169994096 讨论/闲聊,我会在空闲时尽力解答。

> 主题吸收了 [Stellar](https://github.com/xaoxuu/hexo-theme-stellar) 的设计风格,命名为 **Clarity**,寓意清楚的阅读体验和清晰的观点表达。限于下游越来越多,未来将会有选择地收录。

| 博客名称 | 作者 | 对应上游版本 | 下游特色功能 |
| -------------------------------------------------------------- | ------------- | -------------- | -------------------------------------------- |
| **[纸鹿摸鱼处](https://blog.zhilu.site/)** | **L33Z22L11** | v3.6.0-rc.2 | (我是上游) |
| [希乐博客](https://blog.xlenco.top/) | Xlenco | v3.4.8 | 最新评论 |
| [SteinsNote](https://blog.labmem.chat/) | Labmem-00 | v3.1-241112 | 专栏 |
| [月空人](https://whbbit.cn/) | Whbbit1999 | v3.5.2 | 项目/博客/Snippets页 |
| [Mugzx's Blog](https://blog.mugzx.top/) | Mugzx | v3.6.0-rc.1 | 设计风格统一 |
| [喵落阁](https://blog-v3.kemeow.top/) | Kemeow815 | v3.4.7 | 即刻+友圈+最新评论+游戏/番剧页 |
| [梦爱吃鱼](https://blog.bsgun.cn/) | JLinmr | v3.2-250304 | 即刻+友圈+最新评论 |
| [Mikuの极光星](https://blog.sotkg.com/) | PaloMiku | v3.6.0-rc.1 | 设计风格统一,设置面板 |
| [Shenley的存档点](https://blog.shenley.cn/) | shenlye | v3.4.4 | 游戏/番剧页,方形卡片+科技风 |
| [BiuXin-s Blog](https://zhilu.biuxin.com/) | damizai | v3.2-250304 | 即刻+友圈+最新评论 |
| [液泡部落格](https://blog.vacu.top/) | VacuolePaoo | v3.4.9 | 一言+标签tags+页脚随机友链 |
| [歆鸢阁](https://www.myxz.top/) | 661111 | v3.5.2 | 即刻+友圈+Heo友链轮播/Profile |
| [落憾](https://blog.enltlh.me/) | LuoH-AN | v3.6.0-alpha.4 | 即刻+一言+卡片Profile |
| [落尘up](https://www.luochen.chat/) | luochenup | v3.3.4 | 侧栏时间轴 |
| [硅基漫游指南](https://blog.helong.online/) | HeLongy | v3.4.8 | 即刻+友圈+Artalk评论 |
| [fishcpy的小破站](https://blog.fis.ink/) | fishcpy | v3.4.8 | 友圈+Artalk评论 |
| [六月墨语](https://blog.june.ink/) | Akuma-real | v3.5.2 | 友圈+最新评论 |
| [Cталин博客](https://blog.jiclub.site/) | StalinDev54 | v3.4.8 | 侧栏时间轴+关于页 |
| [栖童の小站](https://blog.linux-qitong.top/) | Linux-qitong | v3.6.0-alpha.4 | 即刻+友圈 |
| [墨韵云阁](https://luoyuanxiang.top/) | luoyuanxiang | v3.4.8 | |
| [鹊楠の小窝](https://blog.quenan.cn/) | QNquenan | v3.4.9 | |
| [KingKangBlog](https://blog.kingkang.xyz/) | KingStoning | v3.4.9 | |
| [LittleBun](https://blog.wl.do/) | CiZaii | v3.5.1 | |
| [钟神秀](https://blog.zsxcoder.top/) | mcyzsx | v3.6.0-alpha.4 | |
| [林间拾语](https://www.xhhao.com/?preview-theme=theme-clarity) | acanyo | Halo | https://www.halo.run/store/apps/app-jglhpodw |
| [Wa 的小家](https://blog.gslpro.top/) | Shalomguan | v3.5.2 | |
| [青序栈](https://qixz.cn/) | scfcn | v3.5.2 | |
| [Axel Beta](https://sc.axel.xin/) | ErenAxel | v3.5.2 | |

## 特性

[主题特性](https://blog.zhilu.site/theme) · [组件示例](https://blog.zhilu.site/previews/example)

## 目录结构

项目使用 [Nuxt 4 项目目录结构](https://nuxt.com/docs/4.x/guide/directory-structure/app/app)。

```sh
.
├── app # 前端
│ ├── assets # 资源文件
│ ├── components # 组件
│ │ ├── blog # 博客布局组件
│ │ ├── content # MDC组件
│ │ ├── partial # 微型组件
│ │ ├── popover # 弹窗组件
│ │ ├── post # 文章组件
│ │ ├── util # 功能组件
│ │ └── widget # 侧栏小组件
│ ├── composables # Vue 组合式函数
│ ├── pages # 页面
│ │ ├── [...slug].vue # 正文、404页面
│ │ ├── archive.vue # 归档
│ │ ├── link.vue # 友链
│ │ ├── index.vue # 首页
│ │ └── preview.vue # 预览的文章
│ ├── plugins # Nuxt / Vue 插件
│ ├── stores # Pinia 状态管理
│ ├── types # 类型定义
│ ├── utils # 工具函数
│ ├── app.config.ts # 前端响应式配置★
│ ├── app.vue # 基本布局
│ ├── error.vue # 意外错误页
│ └── feeds.ts # 友链列表★
├── content # 文章
│ ├── posts # 正式文章
│ ├── previews # 草稿文章,仅可被站内搜索
│ ├── link.md # 友链要求
│ └── theme.md # 主题介绍
├── modules # Nuxt 模块
│ └── anti-mirror # 恶意反代跳转
├── packages # Monorepo 包
│ └── remark-music # 乐谱解析
├── patches # npm 包补丁
├── public # 静态资源,生成在站点根目录
│ ├── assets # 订阅源 XSL 模板
│ └── fonts # 字体
├── scripts # npm 脚本
├── server # 服务端
│ ├── api # 接口
│ │ └── stats.get.ts # 博客静态统计
│ └── routes # 根路由
│ ├── atom.xml.get.ts # Atom 订阅源
│ └── zhilu.opml.get.ts # OPML 订阅源聚合
├── blog.config.ts # 博客静态公共配置★
├── content.config.ts # Nuxt Content 配置
├── edgeone.json # EdgeOne 配置
├── nuxt.config.ts # Nuxt 配置
└── redirects.json # 旧站点重定向配置
```

## 快速开始

### 安装依赖

```sh
pnpm i
```

如果你擅长前端并且需要安装 npm 包,推荐通过 `@antfu/nip` 包提供的 `nip` 命令安装 npm 包到合适的 catalog 下。

### 初始配置

```sh
pnpm init-project # 初始化项目配置
```

- 在启动或部署项目时,你需要移除我的文章、我的个人信息、我的统计/评论配置。
- `blog.config.ts` 中的站点信息、Umami 站点统计、Cloudflare Insights 统计、Twikoo 评论服务源。
- `app.config.ts` 中的页脚导航、出生年份等。

- 为保证开发体验,需要安装 ESLint、Stylelint 等 VS Code 扩展。如果你不喜欢此项目的格式化风格,可以在 `./eslint.config.mjs` 和 `./.vscode/settings.json` 中调整或者不安装 VS Code 扩展。

- 如果文章 URL 和先前的不相同,可以通过编辑 `redirects.json` 来添加重定向。

### 创建文章

- 启用 `blog.config.ts` 中的 `article.useRandomPremalink`,即可在创建文章时随机生成 URL。

```sh
pnpm new
```

### 运行开发环境

```sh
pnpm dev
```

### 构建生产环境

```sh
pnpm generate
pnpm preview
```

### 部署指南

支持 Vercel、Netlify、Cloudflare Pages、EdgeOne 等平台部署。建议采用静态(SSG)部署方式:

- 构建命令: `pnpm generate`
- 输出目录: `dist`
- 安装命令: `pnpm i`

如果直接使用平台提供的“Nuxt”预设部署,则会变成 SSR 模式,此模式每次访问都会等待服务端重新渲染。请参阅 [Nuxt 文档](https://nuxt.com/docs/getting-started/deployment) 和 [Nuxt Content 文档](https://content.nuxt.com/docs/deploy/static) 的“部署”一节。

#### 疑难解答

- 当你发现文章页面 404 问题时,请注意文章 URL 不应尾随 `/`。
- 如果修改了 API 路径,使用 EdgeOne 部署需要同步修改 `edgeone.json`。
- 运行、部署项目时 Node.js 版本需要高于 `22.15.0`,推荐使用 Node LTS 最新版。

### 检测友链状态

```sh
pnpm check:feed # 检测某友链 / 任意 URL 的托管商及可访问性
pnpm check:feed/all # 检测所有友链可访问性并生成报告
```

## 贡献

欢迎参与项目:如果有具体问题或功能建议,可以发起 Issue;如果愿意在已确定的方向上增加功能或修复问题,可以提交 Pull Request。

## 许可证

- 项目本体:[MIT](LICENSE)
- 博客文章:[CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)
- 希望你在页脚保留此项目链接,助力开源传播。
本仓库已不再更新,已经移至[该链接](https://github.com/wxuyu/WxuyuNuxtBlog),望周知