バージョン 9 へのアップグレード
バージョン 9 にアップグレードするには、次のコマンドを実行します:
補足: TypeScriptを使用している場合、
@types/react
と@types/react-dom
も対応するバージョンにアップグレードしてください。
Vercel での本番デプロイ
以前にvercel.json
ファイルで動的ルートのroutes
を設定していた場合、Next.js 9の新しい動的ルーティング機能を活用することで、これらのルールを削除できます。
Next.js 9の動的ルートはVercelで自動的に設定され、vercel.json
のカスタマイズは不要です。
動的ルーティングについてはこちらをお読みください。
カスタムAppファイル(pages/_app.js
)を確認
以前にカスタム<App>
の例をコピーしていた場合、getInitialProps
を削除できる可能性があります。
pages/_app.js
からgetInitialProps
を削除することは(可能な限り)、新しいNext.js機能を活用するために重要です!
以下のgetInitialProps
は何もしないため、削除できます:
破壊的変更
@zeit/next-typescript
は不要になりました
Next.jsは@zeit/next-typescript
の使用を無視し、削除を警告します。next.config.js
からこのプラグインを削除してください。
カスタム.babelrc
から@zeit/next-typescript/babel
への参照を削除してください(存在する場合)。
next.config.js
からfork-ts-checker-webpack-plugin
の使用も削除する必要があります。
TypeScriptの定義はnext
パッケージと共に公開されるため、競合するため@types/next
をアンインストールする必要があります。
以下の型が異なります:
このリストはコミュニティによって作成され、アップグレードに役立ちます。他の違いが見つかった場合は、他のユーザーを支援するためにこのリストにプルリクエストを送信してください。
From:
to
config
キーはページでのエクスポートになりました
ページからconfig
という名前のカスタム変数をエクスポートすることはできなくなりました(export { config }
/ export const config ...
)。
このエクスポートされた変数は、オプトインAMPやAPI Route機能などのページレベルのNext.js設定を指定するために使用されるようになりました。
Next.js以外の目的のconfig
エクスポートは、別の名前に変更する必要があります。
next/dynamic
は読み込み中に「loading...」をデフォルトでレンダリングしなくなりました
動的コンポーネントは、読み込み中にデフォルトで何もレンダリングしません。loading
プロパティを設定することで、この動作をカスタマイズできます:
withAmp
は設定オブジェクトのエクスポートに置き換えられました
Next.jsにはページレベルの設定の概念があるため、withAmp
高階コンポーネントは一貫性のために削除されました。
この変更は、Next.jsプロジェクトのルートで次のコマンドを実行することで自動的に移行できます:
手動で移行するか、codemodが生成する内容を確認するには、以下を参照してください:
Before
After
next export
はindex.html
としてページをエクスポートしなくなりました
以前は、pages/about.js
をエクスポートするとout/about/index.html
になっていました。この動作はout/about.html
になるように変更されました。
next.config.js
に次の内容を作成することで、以前の動作に戻すことができます:
pages/api/
は異なる扱いになりました
pages/api/
のページは現在API Routesと見なされます。
このディレクトリのページには、クライアント側のバンドルが含まれなくなりました。
非推奨の機能
next/dynamic
は一度に複数のモジュールを読み込むことを非推奨にしました
一度に複数のモジュールを読み込む機能は、React実装(React.lazy
とSuspense
)に近づけるため、next/dynamic
で非推奨になりました。
この動作に依存するコードの更新は比較的簡単です!アプリケーションを移行するためのビフォーアフターの例を提供します:
Before
After