From c4ea113657fe1bd6fb3eabe69243290a4e806cb0 Mon Sep 17 00:00:00 2001 From: cloudneutral Date: Mon, 22 Dec 2025 12:56:21 +0800 Subject: [PATCH] Ensure contentlayer build artifacts and fix blog rendering --- package.json | 6 +++--- src/app/blog/[...slug]/page.tsx | 10 ++-------- src/app/blog/page.tsx | 7 ++++++- tsconfig.json | 1 + 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index e8685f7..0326e2f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ }, "scripts": { "dev": "next dev --turbo", - "prebuild": "tsx ../scripts/export-slugs.ts && tsx ../scripts/scan-md.ts && tsx ../scripts/fetch-dl-index.ts && node ../scripts/copy-manifests.js", + "prebuild": "tsx ../scripts/export-slugs.ts && tsx ../scripts/scan-md.ts && tsx ../scripts/fetch-dl-index.ts && node ../scripts/copy-manifests.js && contentlayer build", "build": "next build", "build:static": "npm run prebuild && next build", "start": "node ./scripts/start.js", @@ -39,6 +39,7 @@ "@tiptap/starter-kit": "^3.13.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "contentlayer": "^0.3.4", "dompurify": "^3.2.6", "gray-matter": "^4.0.3", "html2canvas": "^1.4.1", @@ -49,6 +50,7 @@ "marked": "^16.1.2", "mermaid": "^11.12.2", "next": "^16.0.9", + "next-contentlayer": "^0.3.4", "next-mdx-remote": "^5.0.0", "next-themes": "^0.4.6", "pdfjs-dist": "^4.2.67", @@ -82,11 +84,9 @@ "@types/sanitize-html": "^2.16.0", "autoprefixer": "^10.4.16", "baseline-browser-mapping": "^2.8.32", - "contentlayer": "^0.3.4", "eslint": "8.57.0", "eslint-config-next": "^15.5.3", "jsdom": "^24.0.0", - "next-contentlayer": "^0.3.4", "postcss": "^8.4.32", "prettier": "^3.3.3", "tailwindcss": "^3.4.3", diff --git a/src/app/blog/[...slug]/page.tsx b/src/app/blog/[...slug]/page.tsx index ff81932..2872bb1 100644 --- a/src/app/blog/[...slug]/page.tsx +++ b/src/app/blog/[...slug]/page.tsx @@ -1,12 +1,11 @@ -export const dynamic = 'error' -export const revalidate = false +export const dynamic = 'force-dynamic' import Link from 'next/link' import { notFound } from 'next/navigation' import { compileMDX } from 'next-mdx-remote/rsc' import type { Metadata } from 'next' -import { getBlogPostBySlug, getBlogSlugs } from '@lib/blogContent' +import { getBlogPostBySlug } from '@lib/blogContent' type PageProps = { params: { slug: string | string[] } @@ -30,11 +29,6 @@ function formatDate(dateStr: string, language: 'zh' | 'en'): string { }) } -export async function generateStaticParams() { - const slugs = await getBlogSlugs() - return slugs.map((slug) => ({ slug: slug.split('/') })) -} - export async function generateMetadata({ params }: PageProps): Promise { const slugParam = await params const slugPath = Array.isArray(slugParam.slug) ? slugParam.slug.join('/') : slugParam.slug diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 3a22c9b..5fefcb4 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -2,6 +2,7 @@ export const dynamic = 'error' export const revalidate = false import type { Metadata } from 'next' +import { Suspense } from 'react' import BlogList from '@components/blog/BlogList' import { getBlogPosts } from '@lib/blogContent' @@ -13,5 +14,9 @@ export const metadata: Metadata = { export default async function BlogPage() { const posts = await getBlogPosts() - return + return ( + Loading blog content...}> + + + ) } diff --git a/tsconfig.json b/tsconfig.json index 3b705bd..60d505e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,7 @@ "jsx": "react-jsx", "baseUrl": ".", // 👈 根路径基准 "paths": { + "contentlayer/generated": ["./.contentlayer/generated"], "@/*": ["src/*"], "@components/*": ["src/components/*"], "@i18n/*": ["src/i18n/*"],