mirror of
https://github.com/DefectingCat/DefectingCat.github.io
synced 2025-07-15 16:51:37 +00:00
add static path generate
This commit is contained in:
@ -1,10 +1,14 @@
|
||||
import PostCard from 'app/blog/post-card';
|
||||
import PostCardLoading from 'app/blog/post-card-loading';
|
||||
import Pagination from 'components/rua/rua-pagination';
|
||||
import { postLists, PostPerPage } from 'lib/posts';
|
||||
import { getPostListPath, postLists, PostPerPage } from 'lib/posts';
|
||||
import { notFound } from 'next/navigation';
|
||||
import { Fragment, Suspense } from 'react';
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return await getPostListPath();
|
||||
}
|
||||
|
||||
export default async function Page({ params }: { params: { page: string } }) {
|
||||
const page = Number(params.page);
|
||||
if (!page) notFound();
|
||||
|
@ -2,20 +2,24 @@ import rehypePrism from '@mapbox/rehype-prism';
|
||||
import components from 'components/mdx/components';
|
||||
import PostToc from 'components/post/post-toc';
|
||||
import data from 'content/mdx-data';
|
||||
import { readSinglePost } from 'lib/posts';
|
||||
import { readSinglePost, allPostsPath } from 'lib/posts';
|
||||
import { SingleToc, generateToc } from 'lib/utils';
|
||||
import { compileMDX } from 'next-mdx-remote/rsc';
|
||||
import dynamic from 'next/dynamic';
|
||||
import { notFound } from 'next/navigation';
|
||||
import rehypeSlug from 'rehype-slug';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
import { Post } from 'types';
|
||||
import dynamic from 'next/dynamic';
|
||||
|
||||
const PostCommnetLine = dynamic(
|
||||
() => import('components/post/post-commnet-line')
|
||||
);
|
||||
const PostComment = dynamic(() => import('components/post/post-comment'));
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return await allPostsPath();
|
||||
}
|
||||
|
||||
const Page = async ({
|
||||
params,
|
||||
}: {
|
||||
|
14
lib/posts.ts
14
lib/posts.ts
@ -37,18 +37,14 @@ export const postLists = async (): Promise<Post[]> => {
|
||||
* Get posts list page.
|
||||
*/
|
||||
export const PostPerPage = 10;
|
||||
export type PostPath = { params: { page: string } };
|
||||
export type PostPath = { page: string };
|
||||
const postPathCallback = (prev: PostPath[], _: unknown, i: number) =>
|
||||
i + 1 > 2
|
||||
? prev.concat({
|
||||
params: { page: (i + 1).toString() },
|
||||
})
|
||||
: prev;
|
||||
i + 1 > 2 ? prev.concat({ page: (i + 1).toString() }) : prev;
|
||||
export const getPostListPath = async () => {
|
||||
const length = (await fs.readdir(path.join(dataPath))).length;
|
||||
const pages = Math.ceil(length / PostPerPage);
|
||||
return Array.from({ length: pages }).reduce<PostPath[]>(postPathCallback, [
|
||||
{ params: { page: '2' } },
|
||||
{ page: '2' },
|
||||
]);
|
||||
};
|
||||
|
||||
@ -60,9 +56,7 @@ export const getPostListPath = async () => {
|
||||
const readFilePath = async (filename: string) => {
|
||||
const slug = filename.replace(/\.mdx$/, '');
|
||||
return {
|
||||
params: {
|
||||
slug,
|
||||
},
|
||||
slug,
|
||||
};
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user