コンテンツにスキップ

next CLI

Next.js CLIを使用すると、アプリケーションの開発、ビルド、起動などを行うことができます。

基本的な使い方

ターミナル
npx next [command] [options]

リファレンス

利用可能なオプションは以下の通りです。

オプション説明
-h または --help利用可能なすべてのオプションを表示します。
-v または --versionNext.js のバージョン番号を出力します。

コマンド

利用可能なコマンドは以下の通りです。

コマンド説明
devホットモジュールリローディング、エラーレポートなどを備えた開発モードでNext.jsを起動します。
buildアプリケーションの最適化された本番ビルドを作成します。各ルートに関する情報を表示します。
start本番モードでNext.jsを起動します。アプリケーションは最初にnext buildでコンパイルされている必要があります。
infoNext.jsのバグ報告に使用できる、現在のシステムに関する関連詳細を表示します。
telemetryNext.jsの完全に匿名化されたテレメトリ収集を有効または無効にできます。
typegen完全なビルドを実行せずに、ルート、ページ、レイアウト、ルートハンドラーのTypeScript定義を生成します。

知っておくと良いこと:コマンドなしでnextを実行するとnext devのエイリアスになります。

next dev オプション

next dev は、ホットモジュールリローディング (HMR)、エラーレポートなどを備えた開発モードでアプリケーションを起動します。next dev を実行する際に利用できるオプションは以下の通りです。

オプション説明
-h, --help利用可能なすべてのオプションを表示します。
[directory]アプリケーションをビルドするディレクトリ。指定しない場合はカレントディレクトリが使用されます。
--turbopackTurbopack を強制的に有効にします(デフォルトで有効)。--turbo としても利用可能です。
--webpack開発用に、デフォルトのTurbopackバンダーの代わりにWebpackを使用します。
-p または --port <port>アプリケーションを起動するポート番号を指定します。デフォルト:3000、環境変数:PORT
-Hまたは--hostname <hostname>アプリケーションを起動するホスト名を指定します。ネットワーク上の他のデバイスでアプリケーションを利用可能にする場合に便利です。デフォルト:0.0.0.0
--experimental-httpsHTTPSでサーバーを起動し、自己署名証明書を生成します。
--experimental-https-key <path>HTTPSキーファイルのパス。
--experimental-https-cert <path>HTTPS証明書ファイルのパス。
--experimental-https-ca <path>HTTPS認証局(CA)証明書ファイルのパス。
--experimental-upload-trace <traceUrl>デバッグトレースの一部をリモートHTTP URLにレポートします。

next build オプション

next build は、アプリケーションの最適化された本番ビルドを作成します。出力には各ルートに関する情報が表示されます。例:

ターミナル
Route (app)
  /_not-found
 ƒ /products/[id]
 
  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand

next build コマンドで利用可能なオプションは以下の通りです。

オプション説明
-h, --help利用可能なすべてのオプションを表示します。
[directory]アプリケーションをビルドするディレクトリ。指定しない場合はカレントディレクトリが使用されます。
--turbopackTurbopack を強制的に有効にします(デフォルトで有効)。--turbo としても利用可能です。
--webpackWebpack を使用してビルドします。
-d または --debugより詳細なビルド出力を有効にします。このフラグを有効にすると、リライト、リダイレクト、ヘッダーなどの追加のビルド出力が表示されます。
--profile本番環境のReactプロファイリングを有効にします。
--no-lintリンティングを無効にします。注意:リンティングはNext 16でnext buildから削除されます。Next 15.5以降でeslint以外のリンターを使用している場合、ビルド中のリンティングは行われません。
--no-manglingマンブリング(mangling)を無効にします。これはパフォーマンスに影響を与える可能性があり、デバッグ目的でのみ使用してください。
--experimental-app-onlyApp Routerのルートのみをビルドします。
--experimental-build-mode [mode]実験的なビルドモードを使用します。(選択肢: "compile", "generate", デフォルト: "default")
--debug-prerender開発環境でのレンダリングエラーをデバッグします。
--debug-build-paths=<patterns>デバッグ用に特定のルートのみをビルドします。

next start オプション

next start は、本番モードでアプリケーションを起動します。アプリケーションはnext buildでコンパイルされている必要があります。

next start コマンドで利用可能なオプションは以下の通りです。

オプション説明
-h または --help利用可能なすべてのオプションを表示します。
[directory]アプリケーションを起動するディレクトリ。ディレクトリが指定されていない場合は、カレントディレクトリが使用されます。
-p または --port <port>アプリケーションを起動するポート番号を指定します。(デフォルト:3000、環境変数:PORT)
-H または --hostname <hostname>アプリケーションを起動するホスト名を指定します(デフォルト:0.0.0.0)。
--keepAliveTimeout <keepAliveTimeout>非アクティブな接続を閉じる前に待機する最大ミリ秒数を指定します。

next info オプション

next info は、GitHub issue を開く際にNext.jsのバグ報告に使用できる、現在のシステムに関する関連詳細を表示します。この情報には、オペレーティングシステムのプラットフォーム/アーキテクチャ/バージョン、バイナリ(Node.js、npm、Yarn、pnpm)、パッケージバージョン(nextreactreact-dom)などが含まれます。

出力はこのようになります

ターミナル
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 23.6.0
  Available memory (MB): 65536
  Available CPU cores: 10
Binaries:
  Node: 20.12.0
  npm: 10.5.0
  Yarn: 1.22.19
  pnpm: 9.6.0
Relevant Packages:
  next: 15.0.0-canary.115 // Latest available version is detected (15.0.0-canary.115).
  eslint-config-next: 14.2.5
  react: 19.0.0-rc
  react-dom: 19.0.0
  typescript: 5.5.4
Next.js Config:
  output: N/A

next info コマンドで利用可能なオプションは以下の通りです。

オプション説明
-h または --help利用可能なすべてのオプションを表示
--verboseデバッグのために追加情報を収集します。

next telemetry オプション

Next.js は、一般的な使用方法に関する完全に匿名化されたテレメトリデータを収集します。この匿名プログラムへの参加は任意であり、情報を共有したくない場合はオプトアウトできます。

next telemetry コマンドで利用可能なオプションは以下の通りです。

オプション説明
-h, --help利用可能なすべてのオプションを表示します。
--enableNext.jsのテレメトリ収集を有効にします。
--disableNext.jsのテレメトリ収集を無効にします。

テレメトリについてさらに学ぶ。

next typegen オプション

next typegen は、完全なビルドを実行せずに、アプリケーションのルートのTypeScript定義を生成します。これは、IDEのオートコンプリートやCIでのルート使用状況の型チェックに役立ちます。

以前は、ルート型はnext devまたはnext buildの実行中にのみ生成されていたため、tsc --noEmitを直接実行してもルート型は検証されませんでした。これで、型を個別に生成し、外部で検証できるようになりました。

ターミナル
# Generate route types first, then validate with TypeScript
next typegen && tsc --noEmit
 
# Or in CI workflows for type checking without building
next typegen && npm run type-check

next typegen コマンドで利用可能なオプションは以下の通りです。

オプション説明
-h, --help利用可能なすべてのオプションを表示します。
[directory]型を生成するディレクトリ。指定しない場合はカレントディレクトリが使用されます。

出力ファイルは<distDir>/types(デフォルト:.next/types)に書き込まれます。

ターミナル
next typegen
# or for a specific app
next typegen ./apps/web

知っておくと良いことnext typegen は、本番ビルドフェーズを使用してNext.jsの設定(next.config.jsnext.config.mjs、またはnext.config.ts)をロードします。設定が正しくロードされるように、必要な環境変数と依存関係が利用可能であることを確認してください。

レンダリングエラーのデバッグ

next build中にレンダリングエラーが発生した場合、--debug-prerenderフラグを渡して、より詳細な出力を取得できます。

ターミナル
next build --debug-prerender

これにより、デバッグを容易にするためのいくつかの実験的なオプションが有効になります。

  • サーバーコードの最小化を無効にします。
    • experimental.serverMinification = false
    • experimental.turbopackMinify = false
  • サーバーバンドルのソースマップを生成します。
    • experimental.serverSourceMaps = true
  • レンダリングに使用される子プロセスでソースマップの消費を有効にします。
    • enablePrerenderSourceMaps = true
  • 最初のレンダリングエラーが発生した後もビルドを続行し、すべての問題を一度に確認できるようにします。
    • experimental.prerenderEarlyExit = false

これにより、ビルド出力でより読みやすいスタックトレースとコードフレームが表示されます。

注意--debug-prerender は開発中のデバッグ専用です。--debug-prerender で生成されたビルドを本番環境にデプロイしないでください。パフォーマンスに影響を与える可能性があります。

特定のルートのビルド

--debug-build-paths オプションを使用して、App RouterとPages Routerの特定のルートのみをビルドできます。これは、大規模なアプリケーションで作業する際のデバッグを高速化するのに役立ちます。--debug-build-paths オプションは、カンマ区切りのファイルパスを受け入れ、グロブパターンもサポートします。

ターミナル
# Build a specific route
next build --debug-build-paths="app/page.tsx"
 
# Build more than one route
next build --debug-build-paths="app/page.tsx,pages/index.tsx"
 
# Use glob patterns
next build --debug-build-paths="app/**/page.tsx"
next build --debug-build-paths="pages/*.tsx"

デフォルトポートの変更

デフォルトでは、Next.jsは開発中およびnext startとともにhttps://:3000を使用します。デフォルトポートは、-pオプションを使用して次のように変更できます。

ターミナル
next dev -p 4000

またはPORT環境変数を使用します。

ターミナル
PORT=4000 next dev

知っておくと良いこと:HTTPサーバーの起動は他のコードの初期化よりも前に行われるため、.envPORTを設定することはできません。

開発中のHTTPSの使用

Webhooksや認証などの特定のユースケースでは、localhostで安全な環境を維持するためにHTTPSを使用できます。Next.jsはnext dev--experimental-httpsフラグを使用して自己署名証明書を生成できます。

ターミナル
next dev --experimental-https

生成された証明書を使用すると、Next.js開発サーバーはhttps://:3000で動作します。ポートが-p--port、またはPORTで指定されていない限り、デフォルトポート3000が使用されます。

--experimental-https-keyおよび--experimental-https-certを使用してカスタム証明書とキーを提供することもできます。オプションで、--experimental-https-caを使用してカスタムCA証明書を提供することもできます。

ターミナル
next dev --experimental-https --experimental-https-key ./certificates/localhost-key.pem --experimental-https-cert ./certificates/localhost.pem

next dev --experimental-https は開発専用であり、mkcertでローカルに信頼される証明書を作成します。本番環境では、信頼された認証局から発行された正規の証明書を使用してください。

下流プロキシのタイムアウト設定

Next.jsを下流プロキシ(例:AWS ELB/ALBのようなロードバランサー)の背後でデプロイする場合、Nextの基盤となるHTTPサーバーに、下流プロキシのタイムアウトよりも大きいキープアライブタイムアウトを設定することが重要です。そうしないと、TCP接続のキープアライブタイムアウトに達すると、Node.jsは下流プロキシに通知せずにその接続を直ちに終了します。これにより、Node.jsが既に終了した接続を再利用しようとした場合にプロキシエラーが発生します。

本番Next.jsサーバーのタイムアウト値を設定するには、次のようにnext start--keepAliveTimeout(ミリ秒単位)を渡します。

ターミナル
next start --keepAliveTimeout 70000

Node.js引数の渡し方

nextコマンドに任意のnode引数を渡すことができます。例:

ターミナル
NODE_OPTIONS='--throw-deprecation' next
NODE_OPTIONS='-r esm' next
NODE_OPTIONS='--inspect' next
バージョン変更履歴
v16.0.0JSバンドルサイズメトリクスがnext buildから削除されました
v15.5.0next typegenコマンドを追加
v15.4.0レンダリングエラーのデバッグを支援するために、next build--debug-prerenderオプションを追加します。