はじめに
検索エンジンからの効率の良いクローリングを考えた場合に設定しておきたいサイトマップ sitemap.xml
を Next.js のプロジェクトで next-sitemap
というパッケージにより手軽に導入する方法を紹介します。
成果物
fwywd のサイトマップ を見ていただくとわかりやすいのですが、以下のような
サイトマップ sitemap.xml
がビルド時に自動的に生成されるところを目標とします。
next-sitemap を選択した理由
参考にしたサイト
バージョン情報
- Node.js:15.11.0
- React:17.0.2
- Next.js:10.2.2
- next-sitemap:1.6.78
next-sitemap を導入
next-sitemap のインストール
以下のコマンドで簡単にインストールができます。
# npm の場合
npm install --save-dev next-sitemap
# yarn の場合
yarn add --dev next-sitemap
基本的には devDependencies
へのインストールで良いと思いますが、必要に応じて --save-dev
や --dev
のオプションを変更すると良いでしょう。
設定ファイルの作成
next-sitemap
で利用する設定ファイルを作成しましょう。
next-sitemap の公式ページ では
next-sitemap.js
をルートディレクトリ下に作るように指示されています。
特に問題がなければこれでも良いですが、ESLint などの設定上、エラーが出る方は
sitemap.config.js
のように
*.config.js
としておくと良いでしょう。
以下が公式ページでも紹介されている必要最低限の設定に加えて、ビルド後の out
というディレクトリに生成した sitemap.xml
と robots.txt
を出力するように設定しています。
// sitemap.config.js
module.exports = {
siteUrl: 'https://fwywd.com',
generateRobotsTxt: true,
sitemapSize: 7000,
outDir: './out',
};
.env
ファイルから設定を読み込むこともできるみたいので、必要に応じて使うのも良いでしょう。
また、先述していた ESLint の設定は以下のように *.config.js
に関しては ESLint を適用しないようにしておきましょう。
// .eslintrc.json
{
...
"ignorePatterns": ["*.config.js"],
...
}
設定ファイルの作成はたったこれだけです。
ビルド前にサイトマップを更新するように設定
package.json
に next-sitemap
をビルド時に使うように設定しましょう。
今回は SSG を前提として紹介していますので、必要に応じて next-sitemap --config sitemap.config
を利用すると良いでしょう。
// package.json
{
...
"scripts": {
"dev": "next dev",
// next-sitemap --config sitemap.config.js を next export の後に追加
"build": "next build && next export && next-sitemap --config sitemap.config.js",
...
これでビルドを行うとビルド後の out
ディレクトリに sitemap.xml
と robots.txt
が作成され、サイトマップの自動生成が成功です。
サイトマップは Google Search Console へ登録
おわりに
next-sitemap は超簡単
[id].tsx
のように動的に生成するページの path などを設定しないといけないかと懸念していたのですが、その点の設定なども全く必要なく、超簡単で最高でした。
ぜひ、Next.js を使っている方はサイトマップの自動生成に next-sitemap
を使ってみてください。