NuxtでGeneratした時に手軽にsitemapを作る

19555 ワード

前提

Nuxt(@2.15.8)で静的なサイトを制作しています。ヘッドレスCMSを使って各ページを生成する形のシンプルなサイトです。
今回は動的なページのリストページがあるので、動的なルートの生成は各ページからリンク(NuxtLink)を辿って、Nuxtがいい感じに生成してくれます。

使用技術

  • フレームワーク:Nuxt.js(@2.15.8)
  • モジュール: nuxtjs/sitemap(@2.4.0)

事前確認

@nuxtjs/sitemapを導入するにあたり、調べてみたとろこ、動的なページの場合、nuxt.config.jsでaxiosしてroutesを生成する、という記事が出てきました。

例:axiosを使ってroutesを返す
export default {
  modules: [
    '@nuxtjs/sitemap'
  ],
  sitemap: {
    hostname: 'https://example.com',
    exclude: [
      '/company'
    ],
    routes: async () => {
      // APIから動的なルートの情報を取得
      const res = await axios.get(
        process.env.API_URL,
        {
          headers: {
            'X-API-KEY': process.env.API_KEY
          }
        }
      )
      // 動的なルートを配列として返す
      return res.data.contents.map((info) => `/info/${info.id}`)
    }
  }
}