import fs from 'fs' import path from 'path' import parse from '../lib/markdown.js' import DataLiterate from '../components/DataLiterate' import { postFilePaths, POSTS_PATH } from '../lib/mdxUtils' export default function PostPage({ source, frontMatter }) { return ( ) } export const getStaticProps = async ({ params }) => { const mdxPath = path.join(POSTS_PATH, `${params.slug.join('/')}.mdx`) const postFilePath = fs.existsSync(mdxPath) ? mdxPath : mdxPath.slice(0, -1) const source = fs.readFileSync(postFilePath) const { mdxSource, frontMatter } = await parse(source) return { props: { source: mdxSource, frontMatter: frontMatter, }, } } export const getStaticPaths = async () => { var paths = postFilePaths // Remove file extensions for page paths .map((path) => path.replace(/\.mdx?$/, '')) // Map the path into the static paths object required by Next.js paths = paths.map((slug) => { // /demo => [demo] const parts = slug.slice(1).split('/') return { params: { slug: parts } } }) return { paths, fallback: false, } }