🧭

Nuxt3のSSGでNuxt Contentを使用する

2023/11/13に公開

Nuxt3でNuxt Contentを使用した際にnpm run devでは問題なく表示されるがnpm run generateで静的サイトとして生成するとNuxt Contentのルートだけ生成されていませんでした。

原因

原因は以下の記事と同じで、他のページが動的ページをリンクしていなかったことが原因でした。

https://beyooon.jp/blog/nuxt-ssg-generate-routes-trouble/

対応策1

v2では以下の方法でNuxt Contentのルートを追加できます。

import fs from "fs";
export default function getContentRoutes() {
  const fileNames = fs
    .readdirSync("./content")
    .map((f) => "/notes/" + f.replace(".md", ""));
  return fileNames;
}
nuxt.config.ts
...
nitro: {
	prerender: {
	routes: getContentRoutes(),
	},
}
...

...できればNuxt Contentが提供している関数を使ってルート設定をしたいです。

対応策2

このDiscussionsにある、マウント前に動的ページのNavigationLinkを全て生成し、マウント後にリンクを削除する方法でできるようです。

https://github.com/nuxt/content/discussions/1317#discussioncomment-5063606

まだ試せてないので上手くできたら追記します。

サイトマップ生成について

Nuxt Contentのドキュメントにはサイトマップの生成方法がありますが、Nuxt Content以外のルートがある場合、kakkokari_gtyihさんの方法のほうが扱いやすいと思いました。

https://zenn.dev/kakkokari_gtyih/articles/db1aed4fed6054

Discussion