Netlify+GatsbyJSでビルドがどうしようもなく遅い時の対処法

refresh calendar 2019-12-25

GatsbyJSはビルドに結構時間がかかってしまいます。 このブログ制作当初はコンテンツや機能がほとんどなかったので、ビルド時間は大して問題にならなかったのですが、色々とコンポーネントを追加していった結果、Netlifyでの運用に問題が出てきてしまいました。

Netlifyでのビルド時間がとても長い

問題はこれです。 ローカル上でのビルド時間はClean後の状態ではおよそ4分程度、記事を1つ追加した場合で40秒程度で済むのですが、Netlifyでビルドさせると毎回10分近くかかっています。

この原因はおそらく関連記事の自動生成によるものだと思っています。

で、毎回10分かかってしまうとなると、毎日1記事アップしていく場合、Netlifyの無料プランについているビルド時間300分という枠を確実に超えてしまうことになります。 もちろん月額$7で枠を増やすこともできますが、ビルド時間の増加ペースを考えると全く割に合わないです。

なにか決定的な解決策が必要です。

Netlify-Cliを使うことにした

Netlifyは「Githubとの連携で自動的にデプロイさせる」というのがサービスの売りだと思うんですが、実はNetlify-Cliというコマンドラインツールも用意されています。

これを使うとローカルでビルドしたものを直接アップロードすることができ、ビルド時間という問題をクリアすることが可能です。

このやり方を取る場合、Netlifyにこだわる必要がないのでSurgeやZeitといた別のサービスの利用も検討したんですが、諸々の条件(NetlifyFormsとか)を考えるとNetlify-Cliを使ってNetlifyで運用し続けるのがベストという判断に落ち着きました。

Netlifyのローカルビルドの始め方

nelify deploy

This folder isn't linked to a site yet
? What would you like to do? 
  Link this directory to an existing site 
❯ +  Create & configure a new site 

deployを初めて実行すると上記のような質問がされるのですが、ここで「+ Create & configure a new site」を選択すると新しいサイトとして作ることができます。 これを実行すると”.netlify”というフォルダが生成され、中に設定ファイルが保存されるため、次回以降は何も考えずに”netlify deploy”とやるだけでOKです。

Netlify Manual Deploy
kanau.page

ちなみに、こうして作られたサイトはNetlifyの管理画面上では「Manual deploys」と表記されるようになります。

Netlify-Cliの注意点

既存のGithubと連携させたプロジェクトをそのまま流用することもできますが、その場合は以前のようにGithubへのプッシュでビルドが走ってしまうので、ローカルでビルドする意味がなくなります。

もし既に既存のプロジェクトと接続させてる場合

netlify unlink

で解除可能とのこと。

おわりに

ビルド時間が長いな…というのがGatsbyJSを使い始めてからの一番気になっていたポイントだったんですが、思い切って方法を切り替えたことでスッキリしました。 これでもうサーバーについては悩むこともなさそうです!

以上、今日はこれにて!

Some images are made by Freepik's icons from www.flaticon.com