コンテンツにスキップ

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マングリングを無効にします。これはパフォーマンスに影響を与える可能性があり、デバッグ目的でのみ使用してください。
--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サーバーの起動は他のコードが初期化される前に行われるため、PORT.envで設定することはできません。

開発中のHTTPSの使用

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

ターミナル
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でローカルに信頼される証明書を作成します。本番環境では、信頼できる認証局から発行された正規の証明書を使用してください。

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

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

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

ターミナル
next start --keepAliveTimeout 70000

Node.js引数の渡し方

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

ターミナル
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.0next build--debug-prerenderオプションを追加し、プリレンダリングエラーのデバッグを支援します。