switched to mdx

This commit is contained in:
Maggie Appleton 2021-09-05 16:09:03 +01:00
parent 1d7be78e38
commit 67b393a1f0
12 changed files with 16 additions and 9 deletions

View file

@ -6,7 +6,7 @@ import Container from "../components/Container";
import Layout from "../components/Layout"; import Layout from "../components/Layout";
import Sidemenu from "../components/Sidemenu"; import Sidemenu from "../components/Sidemenu";
import Card from "../components/Card"; import Card from "../components/Card";
import { gardensFilePath, GARDENS_PATH } from "../utils/mdUtils"; import { gardenFilePath, GARDENS_PATH } from "../utils/mdxUtils";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
export default function Index({ posts }) { export default function Index({ posts }) {
@ -65,7 +65,7 @@ export default function Index({ posts }) {
} }
export function getStaticProps() { export function getStaticProps() {
const posts = gardensFilePath.map((filePath) => { const posts = gardenFilePath.map((filePath) => {
const source = fs.readFileSync(path.join(GARDENS_PATH, filePath)); const source = fs.readFileSync(path.join(GARDENS_PATH, filePath));
const { content, data } = matter(source); const { content, data } = matter(source);

View file

@ -5,18 +5,21 @@ import { serialize } from "next-mdx-remote/serialize";
import dynamic from "next/dynamic"; import dynamic from "next/dynamic";
import Head from "next/head"; import Head from "next/head";
import Link from "next/link"; import Link from "next/link";
import Image from "next/image";
import path from "path"; import path from "path";
import Layout from "../../components/Layout"; import Layout from "../../components/Layout";
import { gardensFilePath, GARDENS_PATH } from "../../utils/mdUtils"; import { gardenFilePath, GARDENS_PATH } from "../../utils/mdxUtils";
// Custom components/renderers to pass to MDX. // Custom components/renderers to pass to MDX.
// Since the MDX files aren't loaded by webpack, they have no knowledge of how // Since the MDX files aren't loaded by webpack, they have no knowledge of how
// to handle import statements. Instead, you must include components in scope // to handle import statements. Instead, you must include components in scope
// here. // here.
const components = { const components = {
img: (props) => <Image {...props} layout="fill" loading="lazy" />,
// It also works with dynamically-imported components, which is especially // It also works with dynamically-imported components, which is especially
// useful for conditionally loading components for certain routes. // useful for conditionally loading components for certain routes.
// See the notes in README.md for more details. // See the notes in README.md for more details.
// TestComponent: dynamic(() => import("../../components/TestComponent")),
Head, Head,
}; };
@ -42,7 +45,7 @@ export default function GardenPage({ source, frontMatter }) {
} }
export const getStaticProps = async ({ params }) => { export const getStaticProps = async ({ params }) => {
const gardenFilePath = path.join(GARDENS_PATH, `${params.slug}.md`); const gardenFilePath = path.join(GARDENS_PATH, `${params.slug}.mdx`);
const source = fs.readFileSync(gardenFilePath); const source = fs.readFileSync(gardenFilePath);
const { content, data } = matter(source); const { content, data } = matter(source);
@ -65,9 +68,9 @@ export const getStaticProps = async ({ params }) => {
}; };
export const getStaticPaths = async () => { export const getStaticPaths = async () => {
const paths = gardensFilePath const paths = gardenFilePath
// Remove file extensions for page paths // Remove file extensions for page paths
.map((path) => path.replace(/\.md?$/, "")) .map((path) => path.replace(/\.mdx?$/, ""))
// Map the path into the static paths object required by Next.js // Map the path into the static paths object required by Next.js
.map((slug) => ({ params: { slug } })); .map((slug) => ({ params: { slug } }));

View file

@ -3,8 +3,12 @@ title: Andy Matuschak
description: Algorithms that make themselves known description: Algorithms that make themselves known
topics: ['evergreen notes', 'education', 'tools for thought'] topics: ['evergreen notes', 'education', 'tools for thought']
url: https://notes.andymatuschak.org/ url: https://notes.andymatuschak.org/
image: https://via.placeholder.com/200x250 image: /public/andy1.jpg
tools: ['mystery system'] tools: ['mystery system']
--- ---
![Andy Matuschak's website](/public/andy1.jpg)
![Andy Matuschak's website](/public/andy2.jpg)
![Andy Matuschak's website](/public/andy3.jpg)

BIN
public/andy1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

BIN
public/andy2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
public/andy3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View file

@ -6,7 +6,7 @@ export const GARDENS_PATH = path.join(process.cwd(), "posts", "gardens");
export const TOOLS_PATH = path.join(process.cwd(), "posts", "tools"); export const TOOLS_PATH = path.join(process.cwd(), "posts", "tools");
// patternFilePath is the list of all mdx files inside the POSTS_PATH directory // patternFilePath is the list of all mdx files inside the POSTS_PATH directory
export const gardensFilePath = fs export const gardenFilePath = fs
.readdirSync(GARDENS_PATH) .readdirSync(GARDENS_PATH)
// Only include md(x) files // Only include md(x) files
.filter((path) => /\.md?$/.test(path)); .filter((path) => /\.mdx?$/.test(path));