GatsbyJS: gatsby-plugin-sitemapの出力がsitemap-index.xmlに変わっていた

最近めっきり涼しくなりましたななんつって煎茶なんぞすすっていたところGoogle Search Consoleが「Hey Hirota、貴様のsitemap.xmlがNot FoundだぜUh-huh?」などとフガフガ言うもんだから「(やれやれGoogle御大ももうご高齢か)おじいちゃんsitemap.xmlならちゃんとそこにありますよ」と開いてみたところ確かにない。Uh-huh?

GatsbyJSで作っているサイトなのだがそういえば最近npmパッケージをごっそりアップデートした。sitemap.xmlはgatsby-plugin-sitemapで作っていたので、バージョンが変わったのかもしれないとpackage.jsonの変更履歴を覗いてみる。

"^2.4.3" -> "^5.21.0"

「変わったのかもしれない」どころじゃなかった。

原因

調べたところgatsby-plugin-sitemapの出力が3.Xと4.Xで変更されていたようだ。

gatsby-plugin-sitemap 3.X

/sitemap.xml
/sitemap-0.xml
/sitemap-1.xml

gatsby-plugin-sitemap 4.x

/sitemap/sitemap-index.xml
/sitemap/sitemap-0.xml
/sitemap/sitemap-1.xml

そりゃNot Foundですわ。ディレクトリもファイル名も変わっていました。

対応

Google Search Consoleでサイトマップを変更する。

追加: /sitemap/sitemap-index.xml
削除: /sitemap.xml

ちなみにgatsby-config.jsで出力先ディレクトリは変更できる。

{
  resolve: `gatsby-plugin-sitemap`,
  options: {
    output: '/',
  }
},

こうすればルートディレクトリに出力してくれる。/sitemap.xmlにしようかと思ったがファイル名は変更できなさそうなのでデフォルトのままにした。