始めに
Nuxtはnuxt generate
で静的ファイルを出力するためGitHub Pagesに配置できると思っていたのですが、意外とつまってしまったのでそれに関して記事にしました。
※バージョンによって挙動が違う気がするので注意してください。僕が試したときはNuxtのバージョンはv2.8.1でした。
結論
先に結論を言うと、gh-pagesモジュールでpushする場合はgh-pages -d dist -t
にして、-t
オプションをいれたら動きました。
背景と原因
基本的にGitHub Pagesのデプロイは以下のサイトを参考にしていました。
ビルドの設定は問題なかったのですが、デプロイの方でいつも使っているgh-pages
にしたことで問題が起きました。具体的にはデプロイ先にアクセスすると生成された_nuxt
ディレクトリ以下のファイルをみてくれませんでした。
どうやらGitHub Pagesは_
が先頭についているものは無視されてしまうようで、.nojekyll
を配置しないといけないようでした。
NuxtプロジェクトをそのままGitHub Pagesに上げると_nuxt配下が404になる
ただ疑問なのはnuxt generate
で生成されたファイルには.nojekyll
がちゃんと入っており、これがpushされていれば何の問題もなかったのですが、なぜかpushされていませんでした。gh-pages
側がドットファイルのpushをスキップしているようです。このドットファイルを含めてpushする方法がなかなか見つからず困っていましたが、どうやら-t
オプションをつけるとやってくれるようです。(yarn gh-pages -h
でコマンドを確認すると普通に載ってました)
gh-pages with static html can't access file when it exists
終わりに
.nojekyll
がないから動かないという記事はよく見かけたのですが、gh-pages
でpushする方法に関する記事は見つからなかったので記事にしました。誰かの役に立てれば幸いです。