NextJSに移行する際に修正した箇所あれこれ

目次
basePath をコメントアウト
以前 next.config.js に basePath を設定した記事を書きました。
/** @type {import('next').NextConfig} */
const nextConfig = {
basePath: '/blog',
reactStrictMode: true,
trailingSlash: true,
};
module.exports = nextConfig;
ドメイン名/blog にアクセスさせる為に basePath を設定していたんですが、不要になるので basePath の設定をコメントアウト。
/** @type {import('next').NextConfig} */
const nextConfig = {
//basePath: "/blog",
reactStrictMode: true,
trailingSlash: true,
};
module.exports = nextConfig;
画像のパスを変更
---
hero_image: './about.png'
---
Gatsby の時は、mdx ファイルと同一階層に(eyecatch)画像を置いていたので、この様な記述になっていました。
---
hero_image: '../assets/about.png'
---
ビルド後の書き出し先フォルダ(デフォルトだと out)内の assets フォルダに画像は集められるみたいなので、相対パスでの設定に変更。
markdown のテーブル記法を正しく表示させる
以前の設定のままだと、markdown のテーブル記法が正しく表示されなくなっていました。
import { unified } from 'unified';
import remarkParse from 'remark-parse';
import remarkRehype from 'remark-rehype';
import rehypeHighlight from 'rehype-highlight';
import rehypeStringify from 'rehype-stringify';
export default async function markdownToHtml(markdown) {
const result = await unified()
.use(remarkParse)
.use(remarkRehype)
.use(rehypeHighlight)
.use(rehypeStringify)
.process(markdown);
return result.toString();
}
remark-gfm を使えば良さそうです。
import { unified } from 'unified';
import remarkParse from 'remark-parse';
import remarkRehype from 'remark-rehype';
import rehypeHighlight from 'rehype-highlight';
import rehypeStringify from 'rehype-stringify';
import remarkGfm from 'remark-gfm';
export default async function markdownToHtml(markdown) {
const result = await unified()
.use(remarkParse)
.use(remarkGfm)
.use(remarkRehype)
.use(rehypeHighlight)
.use(rehypeStringify)
.process(markdown);
return result.toString();
}
こんな感じにしてあげると、正常に表示される様になりました。
個別記事へのパスの設定
以前作成した NextJS ブログでは、pages フォルダ以下に posts フォルダを作成し、そこに個別記事の[slug].js ファイルを配置していました。
<Link href={`/posts/${post.path}`}>{post.title}</Link>
個別記事へのリンクは上記の様に設定して、ドメイン名/blog/posts/個別記事へのパスになっていました。
Gatsby のブログでは、ドメイン名/個別記事へのパスの設定になっていたので、NextJS もそれに倣う様にしてみました。
- pages フォルダ直下に、[slug].js ファイルを移動
- 個別記事へのリンク設定を変更
<Link href={`/${post.path}`}>{post.title}</Link>
これで 個別記事へのパスが、Gatsby の設定と合致する様になりました。