--- import BaseLayout from "../layouts/BaseLayout.astro" import type { MarkdownInstance } from "astro" import dayjs from "dayjs" import { CA_LOGO_URL } from "../consts" type Cover = { url: string square: string alt: string } | string type Post = { layout: string title: string pubDate: string // ISO 字符串,可选改为 `Date` 类型 description: string author: string cover?: Cover tags: string[] theme: string featured: boolean } const posts: MarkdownInstance[] = await Astro.glob("./posts/*.md") const blogs: MarkdownInstance[] = await Astro.glob("../pages/posts/blogs/**/*.md") const allPosts = [...posts, ...blogs].sort((a, b) => { return new Date(b.frontmatter.pubDate).getTime() - new Date(a.frontmatter.pubDate).getTime() }) const getCover = (post: MarkdownInstance) => { if (typeof post.frontmatter.cover === "string") { return { url: post.frontmatter.cover, square: post.frontmatter.cover, alt: "" } } return post.frontmatter.cover || { url: "", square: "", alt: "" } } // const tags = allPosts.reduce((acc, post) => { // post.frontmatter.tags.forEach(tag => { // if (!acc.includes(tag)) { // acc.push(tag) // } // }) // return acc // }, [] as string[]).sort((a, b) => a.localeCompare(b)) ---
博客