本番ビルド

ここまでずっと開発モードだった

npm run dev で立ち上げていたサーバーは、開発中だけのものです。ファイルを保存するたびに、その場で必要なぶんだけ作り直して画面に反映してくれます。手を動かしている間はとても便利ですが、本番でこれを使うことはありません。作り直しの仕組みを常に抱えているぶん重く、エラーの中身もそのまま画面に出るからです。

人に見せるときは、先に一度だけまとめて作り、あとはできあがったものを配るだけにします。それが本番ビルドです。

2つに分かれている

本番は、作る側と配る側の2つに分かれています。

next build が作る側です。app/ の中を全部読んで、TypeScript を JavaScript に直し、名前を短くし、あらかじめ組み立てられるページは HTML にしてしまいます。できあがったものは .next というフォルダに入ります。ここで型のエラーが1つでもあると止まるので、build が通ることそのものが点検になります。

next start が配る側です。.next の中身をそのまま返します。読むだけなので速く、ページを開くたびに作り直したりはしません。

順番は決まっていて、build してから start です。build せずに start すると、配るものが無いと言われて止まります。

package.json に名前を付けておく

この3つは毎日打つので、package.json の scripts に名前を付けておきます。create-next-app で作ると最初から入っていますが、中身を知らずに使うのはもったいないので、自分で書いてみます。

{ "scripts": { "dev": "next dev" } }

こう書いておくと npm run devnext dev が動きます。デプロイ先のサービスも、この scripts を見て build と start を呼びます。名前を変えてしまうと公開のときに動かなくなるので、この3つは決まった名前のままにします。

演習

package.json の scripts を3つ書き、開発モードと本番モードの違いを表にまとめます。

ヒント

layout.tsx
page.tsx
package.json
プレビュー

できているか

  • 表が3行以上ある
  • 開発モードの行がある
  • ビルドの行がある
  • 本番で配る行がある
  • ビルドの出力先を書いている
  • scripts に dev を書いている
  • scripts に build を書いている
  • scripts に start を書いている