@jet-w/astro-blog 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-HVQKQN6B.js → chunk-6D3XRDNY.js} +1 -1
- package/dist/{chunk-ATRISB7B.js → chunk-A2E2VSAQ.js} +43 -3
- package/dist/{chunk-AZHCNNAC.js → chunk-TJTPX2WP.js} +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +2 -2
- package/dist/{i18n-5H4W145i.d.ts → i18n-PgMCFBw0.d.ts} +20 -0
- package/dist/index.d.ts +21 -3
- package/dist/index.js +20 -3
- package/dist/integration.d.ts +1 -1
- package/dist/integration.js +2 -2
- package/package.json +1 -1
- package/src/components/blog/FloatingToc.vue +11 -3
- package/src/components/blog/Hero.astro +17 -2
- package/src/components/blog/NavigationTabs.vue +46 -15
- package/src/components/blog/PostCard.astro +28 -10
- package/src/components/blog/RelatedPosts.astro +23 -7
- package/src/components/blog/TableOfContents.astro +10 -4
- package/src/components/blog/TagCloud.astro +4 -3
- package/src/components/home/FeaturedPostsSection.astro +22 -6
- package/src/components/home/QuickNavSection.astro +33 -4
- package/src/components/home/RecentPostsSection.astro +22 -6
- package/src/components/home/StatsSection.astro +24 -6
- package/src/components/layout/Header.astro +9 -5
- package/src/components/layout/Sidebar.astro +14 -11
- package/src/components/ui/SearchBox.vue +13 -5
- package/src/components/ui/SearchInterface.vue +49 -25
- package/src/pages/archives/[year]/[month].astro +36 -17
- package/src/pages/archives/index.astro +36 -20
- package/src/pages/categories/[category].astro +33 -16
- package/src/pages/categories/index.astro +37 -14
- package/src/pages/posts/[...slug].astro +125 -18
- package/src/pages/posts/index.astro +59 -37
- package/src/pages/posts/page/[page].astro +65 -27
- package/src/pages/search.astro +50 -14
- package/src/pages/slides/index.astro +25 -6
- package/src/pages/tags/[tag].astro +32 -15
- package/src/pages/tags/index.astro +39 -16
- package/src/plugins/remark-containers.mjs +351 -322
- package/src/plugins/remark-protect-code.mjs +69 -0
- package/src/styles/global.css +35 -1
- package/templates/default/.claude/ralph-loop.local.md +48 -0
- package/templates/default/astro.config.mjs +13 -4
- package/templates/default/content/posts/blog_docs_en/{get-started → 01.get-started}/01-intro.md +1 -1
- package/templates/default/content/posts/blog_docs_en/{get-started → 01.get-started}/02-install.md +1 -1
- package/templates/default/content/posts/blog_docs_en/{get-started → 01.get-started}/03-create-post.md +1 -1
- package/templates/default/content/posts/blog_docs_en/{get-started → 01.get-started}/04-structure.md +1 -1
- package/templates/default/content/posts/blog_docs_en/01.get-started/05-deploy.md +208 -0
- package/templates/default/content/posts/blog_docs_en/{get-started → 01.get-started}/README.md +1 -1
- package/templates/default/content/posts/blog_docs_en/02.guide/02-containers.md +245 -0
- package/templates/default/content/posts/blog_docs_en/{guide/markdown → 02.guide}/03-code-blocks.md +2 -1
- package/templates/default/content/posts/blog_docs_en/{guide/features/01-mermaid.md → 02.guide/03-mermaid.md} +1 -1
- package/templates/default/content/posts/blog_docs_en/{guide/features → 02.guide}/04-icons.md +4 -2
- package/templates/default/content/posts/blog_docs_en/{guide/features/02-latex.md → 02.guide/06-latex.md} +1 -1
- package/templates/default/content/posts/blog_docs_en/{guide/features/03-video.md → 02.guide/07-video.md} +1 -1
- package/templates/default/content/posts/blog_docs_en/02.guide/08-slides.md +359 -0
- package/templates/default/content/posts/blog_docs_en/{guide/markdown → 02.guide}/README.md +22 -3
- package/templates/default/content/posts/blog_docs_en/{config → 03.config}/01-site.md +1 -1
- package/templates/default/content/posts/blog_docs_en/{config → 03.config}/02-sidebar.md +1 -1
- package/templates/default/content/posts/blog_docs_en/{config → 03.config}/03-i18n.md +88 -24
- package/templates/default/content/posts/blog_docs_en/{config → 03.config}/README.md +1 -1
- package/templates/default/content/posts/blog_docs_en/README.md +2 -1
- package/templates/default/content/posts/blog_docs_zh/01.get-started/01-intro.md +81 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/02-install.md +137 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/03-create-post.md +176 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/04-structure.md +173 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/05-deploy.md +208 -0
- package/templates/default/content/posts/blog_docs_zh/01.get-started/README.md +52 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/02-containers.md +245 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/03-code-blocks.md +206 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/03-mermaid.md +194 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/04-icons.md +229 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/06-latex.md +233 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/07-video.md +184 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/08-slides.md +359 -0
- package/templates/default/content/posts/blog_docs_zh/02.guide/README.md +213 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/01-site.md +208 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/02-sidebar.md +240 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/03-i18n.md +348 -0
- package/templates/default/content/posts/blog_docs_zh/03.config/README.md +85 -0
- package/templates/default/content/posts/blog_docs_zh/README.md +78 -0
- package/templates/default/src/config/locales/en/index.ts +5 -1
- package/templates/default/src/config/locales/en/menu.ts +3 -1
- package/templates/default/src/config/locales/en/sidebar.ts +18 -2
- package/templates/default/src/config/locales/en/site.ts +1 -1
- package/templates/default/src/config/locales/en/ui.ts +29 -0
- package/templates/default/src/config/locales/zh-CN/index.ts +5 -1
- package/templates/default/src/config/locales/zh-CN/menu.ts +7 -5
- package/templates/default/src/config/locales/zh-CN/sidebar.ts +22 -6
- package/templates/default/src/config/locales/zh-CN/site.ts +2 -2
- package/templates/default/src/config/locales/zh-CN/ui.ts +29 -0
- package/templates/default/src/config/site.ts +2 -2
- package/templates/default/src/content.config.ts +15 -3
- package/templates/default/content/posts/blog_docs/01-quick-start.md +0 -162
- package/templates/default/content/posts/blog_docs/02-frontmatter.md +0 -277
- package/templates/default/content/posts/blog_docs/03-markdown-basic.md +0 -350
- package/templates/default/content/posts/blog_docs/04-containers.md +0 -331
- package/templates/default/content/posts/blog_docs/05-code-blocks.md +0 -388
- package/templates/default/content/posts/blog_docs/06-mermaid.md +0 -431
- package/templates/default/content/posts/blog_docs/07-video.md +0 -243
- package/templates/default/content/posts/blog_docs/08-latex.md +0 -382
- package/templates/default/content/posts/blog_docs/09-icons.md +0 -326
- package/templates/default/content/posts/blog_docs/10-sidebar.md +0 -445
- package/templates/default/content/posts/blog_docs/11-config.md +0 -334
- package/templates/default/content/posts/blog_docs/12-i18n.md +0 -355
- package/templates/default/content/posts/blog_docs/12-slides.mdx +0 -552
- package/templates/default/content/posts/blog_docs/README.md +0 -152
- package/templates/default/content/posts/blog_docs_en/get-started/05-deploy.md +0 -197
- package/templates/default/content/posts/blog_docs_en/guide/README.md +0 -59
- package/templates/default/content/posts/blog_docs_en/guide/features/README.md +0 -51
- package/templates/default/content/posts/blog_docs_en/guide/markdown/02-containers.md +0 -226
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 中文 UI 翻译
|
|
3
|
+
*
|
|
4
|
+
* 在此覆盖任何 UI 字符串。库已提供默认中文翻译,
|
|
5
|
+
* 所以您只需要添加想要自定义的字符串。
|
|
6
|
+
*
|
|
7
|
+
* 可用的翻译键请参考 UITranslations 接口:
|
|
8
|
+
* - 导航: home, blog, about, search
|
|
9
|
+
* - 文章: posts, postList, noPostsFound, readMore, readingTime, minuteRead
|
|
10
|
+
* - 标签和分类: tags, categories, allTags, allCategories, taggedWith, inCategory
|
|
11
|
+
* - 归档: archives, postsInArchive
|
|
12
|
+
* - 侧边栏: recentPosts, popularTags, friendLinks, documentTree
|
|
13
|
+
* - 页脚: quickLinks, contact
|
|
14
|
+
* - 搜索: searchPlaceholder, searchResults, noResults, searching, searchArticles 等
|
|
15
|
+
* - Hero 区域: browsePosts, aboutMe
|
|
16
|
+
* - 分页: previousPage, nextPage, page, of
|
|
17
|
+
* - 文章详情: publishedOn, updatedOn, author, tableOfContents, relatedPosts 等
|
|
18
|
+
* - 其他: backToTop, copyCode, copied, expand, collapse, viewMode, sortBy 等
|
|
19
|
+
* - 演示: slides, slidesList
|
|
20
|
+
* - RSS: rssFeed
|
|
21
|
+
*/
|
|
22
|
+
import type { UITranslations } from '@jet-w/astro-blog';
|
|
23
|
+
|
|
24
|
+
export const ui: Partial<UITranslations> = {
|
|
25
|
+
// 示例覆盖:
|
|
26
|
+
// browsePosts: '浏览文章',
|
|
27
|
+
// aboutMe: '关于我',
|
|
28
|
+
// searchPlaceholder: '搜索文章...',
|
|
29
|
+
};
|
|
@@ -10,8 +10,8 @@ import type { SiteConfig } from '@jet-w/astro-blog';
|
|
|
10
10
|
* Site configuration
|
|
11
11
|
*/
|
|
12
12
|
export const siteConfig: SiteConfig = {
|
|
13
|
-
title: 'My Astro
|
|
14
|
-
description: '
|
|
13
|
+
title: 'My Astro Blog22',
|
|
14
|
+
description: '',
|
|
15
15
|
author: 'Author',
|
|
16
16
|
email: 'email@example.com',
|
|
17
17
|
avatar: '/images/avatar.svg',
|
|
@@ -2,7 +2,11 @@ import { defineCollection, z } from 'astro:content';
|
|
|
2
2
|
import { glob } from 'astro/loaders';
|
|
3
3
|
|
|
4
4
|
const posts = defineCollection({
|
|
5
|
-
loader: glob({
|
|
5
|
+
loader: glob({
|
|
6
|
+
pattern: '**/*.{md,mdx}',
|
|
7
|
+
base: './content/posts',
|
|
8
|
+
generateId: ({ entry }) => entry.replace(/\.(md|mdx)$/, ''),
|
|
9
|
+
}),
|
|
6
10
|
schema: z.object({
|
|
7
11
|
title: z.string(),
|
|
8
12
|
description: z.string().optional(),
|
|
@@ -60,7 +64,11 @@ const posts = defineCollection({
|
|
|
60
64
|
});
|
|
61
65
|
|
|
62
66
|
const pages = defineCollection({
|
|
63
|
-
loader: glob({
|
|
67
|
+
loader: glob({
|
|
68
|
+
pattern: '**/*.{md,mdx}',
|
|
69
|
+
base: './content/pages',
|
|
70
|
+
generateId: ({ entry }) => entry.replace(/\.(md|mdx)$/, ''),
|
|
71
|
+
}),
|
|
64
72
|
schema: z.object({
|
|
65
73
|
title: z.string(),
|
|
66
74
|
description: z.string().optional(),
|
|
@@ -70,7 +78,11 @@ const pages = defineCollection({
|
|
|
70
78
|
});
|
|
71
79
|
|
|
72
80
|
const slides = defineCollection({
|
|
73
|
-
loader: glob({
|
|
81
|
+
loader: glob({
|
|
82
|
+
pattern: '**/*.{md,mdx}',
|
|
83
|
+
base: './content/slides',
|
|
84
|
+
generateId: ({ entry }) => entry.replace(/\.(md|mdx)$/, ''),
|
|
85
|
+
}),
|
|
74
86
|
schema: z.object({
|
|
75
87
|
title: z.string(),
|
|
76
88
|
description: z.string().optional(),
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 快速开始
|
|
3
|
-
description: 5分钟创建你的第一篇博客文章
|
|
4
|
-
pubDate: 2025-12-11
|
|
5
|
-
author: Astro Blog
|
|
6
|
-
categories:
|
|
7
|
-
- 博客教程
|
|
8
|
-
tags:
|
|
9
|
-
- 入门
|
|
10
|
-
- 教程
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 快速开始
|
|
14
|
-
|
|
15
|
-
本章将带你快速上手博客系统,从安装到发布第一篇文章。
|
|
16
|
-
|
|
17
|
-
## 环境准备
|
|
18
|
-
|
|
19
|
-
确保已安装以下工具:
|
|
20
|
-
|
|
21
|
-
- **Node.js** 18.x 或更高版本
|
|
22
|
-
- **npm** 或 **pnpm** 包管理器
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# 检查 Node.js 版本
|
|
26
|
-
node --version
|
|
27
|
-
|
|
28
|
-
# 检查 npm 版本
|
|
29
|
-
npm --version
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## 安装与运行
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# 安装依赖
|
|
36
|
-
npm install
|
|
37
|
-
|
|
38
|
-
# 启动开发服务器
|
|
39
|
-
npm run dev
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
开发服务器启动后,访问 `http://localhost:4321` 即可预览博客。
|
|
43
|
-
|
|
44
|
-
::: tip 热更新
|
|
45
|
-
开发模式下修改文件会自动刷新页面,无需手动重启服务器。
|
|
46
|
-
:::
|
|
47
|
-
|
|
48
|
-
## 目录结构
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
content/posts/
|
|
52
|
-
├── blog_docs/ # 博客文档
|
|
53
|
-
├── tech/ # 技术文章
|
|
54
|
-
│ ├── README.md # 目录首页
|
|
55
|
-
│ └── article.md # 具体文章
|
|
56
|
-
└── my-first-post.md # 根目录文章
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
::: note 目录组织
|
|
60
|
-
- 相关主题文章放在同一目录
|
|
61
|
-
- 每个目录可添加 `README.md` 作为首页
|
|
62
|
-
- 访问目录路径会自动展示 README 内容
|
|
63
|
-
:::
|
|
64
|
-
|
|
65
|
-
## 创建第一篇文章
|
|
66
|
-
|
|
67
|
-
在 `content/posts/` 目录下创建 `hello-world.md`:
|
|
68
|
-
|
|
69
|
-
```markdown
|
|
70
|
-
---
|
|
71
|
-
title: Hello World
|
|
72
|
-
description: 我的第一篇博客文章
|
|
73
|
-
pubDate: 2025-01-01
|
|
74
|
-
author: 你的名字
|
|
75
|
-
tags:
|
|
76
|
-
- 入门
|
|
77
|
-
categories:
|
|
78
|
-
- 随笔
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
# Hello World
|
|
82
|
-
|
|
83
|
-
欢迎来到我的博客!
|
|
84
|
-
|
|
85
|
-
## 为什么开始写博客
|
|
86
|
-
|
|
87
|
-
写博客可以帮助我:
|
|
88
|
-
|
|
89
|
-
1. 整理和巩固知识
|
|
90
|
-
2. 分享经验和见解
|
|
91
|
-
3. 记录成长过程
|
|
92
|
-
|
|
93
|
-
> 千里之行,始于足下。
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
保存后,访问 `http://localhost:4321/posts/hello-world` 即可查看。
|
|
97
|
-
|
|
98
|
-
## Frontmatter 基础
|
|
99
|
-
|
|
100
|
-
文章开头 `---` 之间的部分是 Frontmatter(元数据):
|
|
101
|
-
|
|
102
|
-
```yaml
|
|
103
|
-
---
|
|
104
|
-
title: 文章标题 # 必填
|
|
105
|
-
description: 文章描述 # 推荐,用于 SEO 和列表展示
|
|
106
|
-
pubDate: 2025-01-01 # 推荐,发布日期
|
|
107
|
-
author: 作者名 # 可选
|
|
108
|
-
tags: # 可选,标签列表
|
|
109
|
-
- 标签1
|
|
110
|
-
- 标签2
|
|
111
|
-
categories: # 可选,分类列表
|
|
112
|
-
- 分类名
|
|
113
|
-
draft: false # 可选,草稿状态
|
|
114
|
-
star: false # 可选,星标/置顶
|
|
115
|
-
---
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
::: info 日期字段
|
|
119
|
-
支持 `pubDate` 和 `date` 两种写法,系统会自动识别。
|
|
120
|
-
:::
|
|
121
|
-
|
|
122
|
-
## 添加图片
|
|
123
|
-
|
|
124
|
-
将图片放入 `public/images/` 目录,然后在文章中引用:
|
|
125
|
-
|
|
126
|
-
```markdown
|
|
127
|
-

|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## 构建部署
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
# 构建生产版本
|
|
134
|
-
npm run build
|
|
135
|
-
|
|
136
|
-
# 本地预览构建结果
|
|
137
|
-
npm run preview
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
构建产物在 `dist/` 目录,可部署到任何静态托管服务。
|
|
141
|
-
|
|
142
|
-
## 常见问题
|
|
143
|
-
|
|
144
|
-
### 文章不显示?
|
|
145
|
-
|
|
146
|
-
检查以下几点:
|
|
147
|
-
|
|
148
|
-
1. Frontmatter 格式正确(`---` 标记完整)
|
|
149
|
-
2. `title` 字段存在且非空
|
|
150
|
-
3. `draft` 不是 `true`
|
|
151
|
-
|
|
152
|
-
### URL 路径规则
|
|
153
|
-
|
|
154
|
-
- 文件路径决定 URL:`content/posts/tech/intro.md` → `/posts/tech/intro`
|
|
155
|
-
- 路径自动转小写
|
|
156
|
-
- `README.md` 对应目录路径:`content/posts/tech/README.md` → `/posts/tech`
|
|
157
|
-
|
|
158
|
-
## 下一步
|
|
159
|
-
|
|
160
|
-
- [Frontmatter 配置](./02-frontmatter) - 了解所有配置项
|
|
161
|
-
- [Markdown 基础](./03-markdown-basic) - 复习 Markdown 语法
|
|
162
|
-
- [容器语法](./04-containers) - 使用提示框等组件
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Frontmatter 配置
|
|
3
|
-
description: 文章元数据配置完整指南
|
|
4
|
-
pubDate: 2025-12-11
|
|
5
|
-
author: Astro Blog
|
|
6
|
-
categories:
|
|
7
|
-
- 博客教程
|
|
8
|
-
tags:
|
|
9
|
-
- 配置
|
|
10
|
-
- Frontmatter
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Frontmatter 配置
|
|
14
|
-
|
|
15
|
-
Frontmatter 是文章开头 `---` 之间的 YAML 格式元数据,用于定义文章的标题、日期、标签等信息。
|
|
16
|
-
|
|
17
|
-
## 完整字段列表
|
|
18
|
-
|
|
19
|
-
```yaml
|
|
20
|
-
---
|
|
21
|
-
# 基础字段(必填/推荐)
|
|
22
|
-
title: 文章标题 # 必填
|
|
23
|
-
description: 文章描述 # 推荐,用于 SEO 和列表展示
|
|
24
|
-
pubDate: 2025-01-01 # 推荐,发布日期
|
|
25
|
-
|
|
26
|
-
# 分类与标签
|
|
27
|
-
tags: # 可选,标签列表
|
|
28
|
-
- 标签1
|
|
29
|
-
- 标签2
|
|
30
|
-
categories: # 可选,分类列表
|
|
31
|
-
- 分类名
|
|
32
|
-
|
|
33
|
-
# 作者与来源
|
|
34
|
-
author: 作者名 # 可选,默认使用站点配置
|
|
35
|
-
|
|
36
|
-
# 显示控制
|
|
37
|
-
image: /images/cover.jpg # 可选,封面图片
|
|
38
|
-
icon: ri:article-line # 可选,侧边栏图标
|
|
39
|
-
draft: false # 可选,草稿不会发布
|
|
40
|
-
star: false # 可选,星标/推荐文章
|
|
41
|
-
index: true # 可选,是否加入索引
|
|
42
|
-
|
|
43
|
-
# 时间相关
|
|
44
|
-
updatedDate: 2025-01-02 # 可选,最后更新日期
|
|
45
|
-
---
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## 字段详解
|
|
49
|
-
|
|
50
|
-
### title(标题)
|
|
51
|
-
|
|
52
|
-
**必填字段**,显示在页面、列表和 SEO 中。
|
|
53
|
-
|
|
54
|
-
```yaml
|
|
55
|
-
title: 深入理解 JavaScript 闭包
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
::: warning 特殊字符
|
|
59
|
-
标题包含冒号、引号等特殊字符时,需用引号包裹:
|
|
60
|
-
```yaml
|
|
61
|
-
title: "Vue 3: 新特性详解"
|
|
62
|
-
```
|
|
63
|
-
:::
|
|
64
|
-
|
|
65
|
-
### description(描述)
|
|
66
|
-
|
|
67
|
-
用于 SEO 和文章列表展示,建议 50-160 字符。
|
|
68
|
-
|
|
69
|
-
```yaml
|
|
70
|
-
description: 本文详细介绍 JavaScript 闭包的概念、原理和实际应用
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### pubDate / date(发布日期)
|
|
74
|
-
|
|
75
|
-
系统同时支持 `pubDate` 和 `date` 两种写法:
|
|
76
|
-
|
|
77
|
-
```yaml
|
|
78
|
-
pubDate: 2025-01-01
|
|
79
|
-
# 或
|
|
80
|
-
date: 2025-01-01
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
支持的格式:
|
|
84
|
-
|
|
85
|
-
```yaml
|
|
86
|
-
pubDate: 2025-01-01 # 仅日期
|
|
87
|
-
pubDate: 2025-01-01T10:30:00 # ISO 格式
|
|
88
|
-
pubDate: 2025-01-01 10:30 # 简写格式
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### tags(标签)
|
|
92
|
-
|
|
93
|
-
用于文章分类和标签云展示:
|
|
94
|
-
|
|
95
|
-
```yaml
|
|
96
|
-
tags:
|
|
97
|
-
- JavaScript
|
|
98
|
-
- 前端
|
|
99
|
-
- 教程
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
也支持行内数组格式:
|
|
103
|
-
|
|
104
|
-
```yaml
|
|
105
|
-
tags: [JavaScript, 前端, 教程]
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
::: tip 标签建议
|
|
109
|
-
- 3-5 个标签为宜
|
|
110
|
-
- 使用有意义的关键词
|
|
111
|
-
- 同类文章使用统一标签
|
|
112
|
-
:::
|
|
113
|
-
|
|
114
|
-
### categories(分类)
|
|
115
|
-
|
|
116
|
-
宏观的内容分类,与标签不同:
|
|
117
|
-
|
|
118
|
-
```yaml
|
|
119
|
-
categories:
|
|
120
|
-
- 技术教程
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
系统同时支持 `categories` 和 `category` 两种写法,也支持单个字符串:
|
|
124
|
-
|
|
125
|
-
```yaml
|
|
126
|
-
category: 技术教程
|
|
127
|
-
# 等同于
|
|
128
|
-
categories:
|
|
129
|
-
- 技术教程
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### author(作者)
|
|
133
|
-
|
|
134
|
-
文章作者,不填则使用站点配置中的默认作者:
|
|
135
|
-
|
|
136
|
-
```yaml
|
|
137
|
-
author: 张三
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### image(封面图)
|
|
141
|
-
|
|
142
|
-
文章封面图片,用于列表展示和社交分享:
|
|
143
|
-
|
|
144
|
-
```yaml
|
|
145
|
-
image: /images/posts/my-cover.jpg
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
图片放置于 `public/images/` 目录。
|
|
149
|
-
|
|
150
|
-
### icon(图标)
|
|
151
|
-
|
|
152
|
-
侧边栏和列表中显示的图标,支持多种格式:
|
|
153
|
-
|
|
154
|
-
```yaml
|
|
155
|
-
icon: ri:vue-line # Remix Icon
|
|
156
|
-
icon: fa:code # Font Awesome
|
|
157
|
-
icon: bi:terminal # Bootstrap Icons
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
详见 [图标系统](./09-icons)。
|
|
161
|
-
|
|
162
|
-
### draft(草稿)
|
|
163
|
-
|
|
164
|
-
设为 `true` 时文章不会发布:
|
|
165
|
-
|
|
166
|
-
```yaml
|
|
167
|
-
draft: true
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
草稿文章:
|
|
171
|
-
- 不在列表中显示
|
|
172
|
-
- 不会构建到生产环境
|
|
173
|
-
- 开发环境可通过 URL 直接访问预览
|
|
174
|
-
|
|
175
|
-
### star(星标)
|
|
176
|
-
|
|
177
|
-
标记推荐文章:
|
|
178
|
-
|
|
179
|
-
```yaml
|
|
180
|
-
star: true
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
星标文章可用于首页精选展示。
|
|
184
|
-
|
|
185
|
-
### updatedDate(更新日期)
|
|
186
|
-
|
|
187
|
-
文章最后更新时间,显示在文章底部:
|
|
188
|
-
|
|
189
|
-
```yaml
|
|
190
|
-
updatedDate: 2025-01-15
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
## 实际示例
|
|
194
|
-
|
|
195
|
-
### 技术教程
|
|
196
|
-
|
|
197
|
-
```yaml
|
|
198
|
-
---
|
|
199
|
-
title: Vue 3 组合式 API 指南
|
|
200
|
-
description: 全面掌握 Vue 3 Composition API
|
|
201
|
-
pubDate: 2025-01-01
|
|
202
|
-
updatedDate: 2025-01-10
|
|
203
|
-
author: 张三
|
|
204
|
-
tags:
|
|
205
|
-
- Vue
|
|
206
|
-
- Vue 3
|
|
207
|
-
- 前端
|
|
208
|
-
categories:
|
|
209
|
-
- 技术教程
|
|
210
|
-
image: /images/vue3-guide.jpg
|
|
211
|
-
---
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### 系列文章首页
|
|
215
|
-
|
|
216
|
-
```yaml
|
|
217
|
-
---
|
|
218
|
-
title: TypeScript 入门教程
|
|
219
|
-
description: 从零开始学习 TypeScript
|
|
220
|
-
pubDate: 2025-01-01
|
|
221
|
-
categories:
|
|
222
|
-
- 教程系列
|
|
223
|
-
star: true
|
|
224
|
-
---
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### 草稿文章
|
|
228
|
-
|
|
229
|
-
```yaml
|
|
230
|
-
---
|
|
231
|
-
title: 正在撰写的文章
|
|
232
|
-
pubDate: 2025-01-01
|
|
233
|
-
draft: true
|
|
234
|
-
---
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
## 常见问题
|
|
238
|
-
|
|
239
|
-
### YAML 解析错误
|
|
240
|
-
|
|
241
|
-
```yaml
|
|
242
|
-
# 错误:冒号后需要空格
|
|
243
|
-
title:标题
|
|
244
|
-
|
|
245
|
-
# 正确
|
|
246
|
-
title: 标题
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### 日期格式问题
|
|
250
|
-
|
|
251
|
-
```yaml
|
|
252
|
-
# 错误
|
|
253
|
-
date: 12-01-2025 # 格式不对
|
|
254
|
-
date: 2025/01/01 # 斜杠不支持
|
|
255
|
-
|
|
256
|
-
# 正确
|
|
257
|
-
date: 2025-01-01 # YYYY-MM-DD
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
### 列表格式问题
|
|
261
|
-
|
|
262
|
-
```yaml
|
|
263
|
-
# 错误
|
|
264
|
-
tags: JavaScript, Vue # 逗号分隔不行
|
|
265
|
-
|
|
266
|
-
# 正确
|
|
267
|
-
tags:
|
|
268
|
-
- JavaScript
|
|
269
|
-
- Vue
|
|
270
|
-
# 或
|
|
271
|
-
tags: [JavaScript, Vue]
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
## 下一步
|
|
275
|
-
|
|
276
|
-
- [Markdown 基础](./03-markdown-basic) - 学习文章内容写作
|
|
277
|
-
- [图标系统](./09-icons) - 了解 icon 字段的使用
|