環境
- Next.js
- ビルド: Static Generation
- バージョン: 14.1.0
- GitHub PagesにNext.jsでビルドした静的サイトをテスト公開している
- URL:
https://username.github.io/repository-name/
- URL:
- 本番時は別の独自ドメインを使う
src/publicをsrc/assetsにシンボリックリンクを貼っている
問題
以下のような形で画像を表示しようとした場合、GitHub Pagesはサブディレクトリがベースになってしまうため、https://username.github.io/sugoi.pngにアクセスしようとしてしまう。
<img src="/sugoi.png" alt="すごい画像" />ページがhttps://username.github.io/repository-name/であれば、以下のような指定をすれば良い。
<img src="sugoi.png" alt="すごい画像" />ただ、https://username.github.io/repository-name/2nd/と階層を深くした場合は上記の方法では対応できない。
パスを変える
以下のように環境変数でパスを出し分けて、imgのsrcに指定をしていく方法もある。
const PATH = process.env.GITHUB_PAGES === 'true' ? '/repository-name' : '';
export default function Home() {
return <img src={`${PATH}/sugoi.png`} alt="すごい画像" />;
}ただ、これを続けていくのは面倒であり、GitHub Pagesのみでの対応の想定なのでシンプルにしたい。