vite-plugin-sitemap というプラグインを使えば簡単に生成できます。
https://www.npmjs.com/package/vite-plugin-sitemap
npm install vite-plugin-sitemap
import Sitemap from 'vite-plugin-sitemap'
export default defineConfig({
plugins: [
vue(),
Sitemap({
hostname: 'https://gametsukurukun.com/',
}),
],
...
})
これだけで実際に存在するページ情報だけを含んだ sitemap.xml を生成して dist ディレクトリ以下に置いてくれます。簡単。
vite-plugin-sitemap を使った方法だと、URL の一番最後にスラッシュ /
がつかないため、クロールの際に「ページにリダイレクトがあります」というエラーが出てしまうという問題がありました。
今は sitemap-generator という npm パッケージを使ってサイトマップを生成しています
sitemap-generator の使い方はこんな感じになります
npm install sitemap-generator
import SitemapGenerator from 'sitemap-generator'
const generator = SitemapGenerator('https://gametsukurukun.com', {
filepath: './dist/sitemap.xml',
})
generator.on('done', () => {
})
generator.start()
このスクリプトを実行すると ./dist/sitemap.xml が生成されます。
sitemap-generator の場合、実際にサイトを見に行ってクロールした結果を元にサイトマップを生成するため、若干が時間がかかります。
とはいえ、多少時間がかかっても正確なサイトマップを作るのが大事だと思うので、こちらの方法を採用した方が良いかと。
一方で、Google はクロールの際に URL の最後の '/' を勝手に補ってくれるため、特に気にせず vite-plugin-sitemap を使っても良いのかもしれません。
個人的には警告レベルであってもエラーが出るのは嫌だなあと思ったので sitemap-generator を使うようにしています。