# Nuxt.js (SSR)の build にかかる時間の短縮

# 問題

Nuxt.js で Web アプリを開発するとき、nuxt.config.js設定でアプリを SPA にするかサーバサイドレンダリング(SSR)にするかを選べる。アプリケーションをデプロイするとき、SPA の場合には、$ nuxt build、 SSR の場合には $ nuxt generate コマンドを実行することになる。

$ nuxt generate コマンドを実行すると、pages にある各ページについて静的ページを作成するため、その分時間がかかる。Netlify を利用してアプリケーションをホスティングする場合、build のタイムアウト時間が 15 分ほど。SSR の場合には静的ページの生成に時間がかかってデプロイに失敗する事がある。

# 対応策: nuxt-generate-cluster

nuxt-generate-cluster は Nuxt.js を利用した静的ファイルの generate をマルチスレッドで行うためのツール。

# インストール

yarn add nuxt-generate-cluster

# 設定

package.json$ yarn generate の実行内容を以下のように変更。

"scripts": {
  "generate": "nuxt-generate -w 4"
}

上記で 4 つの worker が動作するようになる。他にも nuxt.config.js で詳細な設定を行えるが、最低限これだけでもマルチスレッドでの generate が可能になる。

# 結果

自分が扱っていたシステムでは 15 分強の時間がかかっていた全体のビルド時間が、4 つの worker で 10 分程度まで短縮された。

Last Updated: 2020/2/11 21:21:15