- Next.js
JSS 22.6 Next.jsアプリをバージョン22.7にアップグレードしてください
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このガイドでは、バージョン22.7の改善を活用するために既存のNext.js JSS 22.6アプリケーションに加えるべきほとんどの変更点をカバーしています。ただし、このプロセスにはReactをバージョン19 、Next.jsをバージョン15に更新する必要があるため、各フレームワークの該当ガイドを参照してアプリのアップグレードプロセスを完了する必要があります。
!重要バージョン22.7でNext.js向けに導入された重要な変更点は、GraphQLの自動コード生成の廃止です。このために使用されていた以前のサードパーティパッケージ(graphql-let)は現在メンテナンスされておらず、潜在的なセキュリティ脆弱性を引き起こしています。このアップグレードガイドではgraphql-letを無効にする方法を説明しており、特に自動コード生成が不要な場合は、必ずこれを無効にすることを強くお勧めします。
もし望むなら、手動でコード生成ロジックを実装することも可能です。このドキュメントには、代替パッケージとしてgraphql-codegenを使うためのガイドが含まれています。
JavaScriptやNext.jsアプリケーション開発の性質上、このガイドは既存のアプリケーションで可能なすべてのカスタマイズをカバーしていません。
アップグレードの際には、Next.jsアプリケーションを作成する際に使用したJSSテンプレートやアドオンを考慮してください。それらはpackage.jsonファイル内で見つけることができます。例えば、JSS 22.6アプリケーションでは以下のテンプレートやアドオンが使われていることがあります:
- nextjs
- nextjs-styleguideまたは nextjs-sxa
- nextjs-multisite
!注始める前に
まだなら、アプリをJSS 22.6にアップグレードしてください。
これらの新バージョンで何が変更されたのかを理解するために、React 19およびNext.js 15の公式リリースノートを読むことをお勧めします。
変更ログに慣れておきましょう。アプリケーションが大幅にカスタマイズされている場合、変更ログはこのトピックで扱われていない追加の変更点の指針を提供します。
このトピックでは、以下の方法を説明します:
- 既存のアプリでアプリケーション依存関係を更新する
- JSS 22.7 Next.jsアプリケーションを作成する
- 既存のアプリでNext.jsテンプレートファイルを更新してください
- SXAアドオンの更新
- 自動GraphQLコード生成を無効にしてください:::
既存のアプリでアプリケーション依存関係を更新する
アップグレードしたアプリケーションを正しく動作させるには、依存関係を更新する必要があります。
依存関係を更新するには:
-
既存のアプリケーションのpackage.jsonファイルでは:
-
すべての @sitecore-jssパッケージをバージョン ~22.7.0に更新してください。
-
以下の依存関係を指定されたバージョンに更新します:
"next": "^15.3.1", "react": "^19.1.0", "react-dom": "^19.1.0", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.3", "eslint-plugin-react": "^7.37.5",
-
-
以下のコマンドで依存関係をインストールします:
npm install
JSS 22.7 Next.jsアプリケーションを作成する
アップグレードプロセスをできるだけ簡単にするために、JSS 22.7 Next.jsアプリケーションを作成しましょう。このアプリから既存のアプリにファイルをコピーできます。
JSS 22.7 Next.jsアプリケーションを作成するには:
-
コンソールでは、次のコマンドを実行します:
npx [email protected] nextjs
-
[email protected]パッケージをインストールするよう促された場合、yに答えてください。
-
JSS 22.7 Next.jsアプリのフォルダパスを入力します。例えば、*./jss227*と入力して現在のワーキングディレクトリにアプリフォルダを作成します。
-
残りのプロンプトに従い、既存のアプリケーションと同じデータ取得(GraphQLまたはREST)とプリレンダリング(SSGまたはSSR)を選択してください。
-
Sitecore XM Cloud用に構築しているか尋ねられたら、nと答えてください。
-
既存のアプリケーションで使っている他のアドオンを選択し、Enterキーを押してください。
スクリプトはその後、アプリケーションの依存関係をインストールします。
既存のアプリでNext.jsテンプレートファイルを更新してください
これは、既存のアプリケーション内のファイルを新しいJSS 22.7アプリの対応ファイルと同期する方法を説明しています。
Next.jsテンプレートファイルの更新:
-
JSX名前空間を使用するすべてのコンポーネント(例えばJSX.Element型が存在する場合)に対して、reactからJSXインポートを追加します。
-
src/Bootstrap.tsxファイルでは、既存のreactインポートは次のような形になるかもしれません:
import { useEffect } from 'react';
-
その場合、JSXを加えて以下のものを作成します。
import { useEffect, JSX } from 'react';
!ヒントもしこれらのファイルを以前にカスタマイズしていなければ、テンプレートアプリのバージョンに置き換えることができます。
-
SXAアドオンの更新
SXAアドオンのアップデート:
-
src/assets/sass/components/_component-column-splitter.scssファイルをカスタマイズしていなければ、テンプレートアプリのバージョンに置き換えてください。そうでなければ、以下の手順を踏みます。
-
以下のパディングルールを見つけてください:
padding-left: $default-padding / 2; padding-right: $default-padding / 2;
-
これらのルールを以下のものに置き換えてください:
padding-left: $default-padding * 0.5; padding-right: $default-padding * 0.5;
-
-
/src/assets/sass/components/promo/_promo-shadow.scssファイルをカスタマイズしていなければ、テンプレートアプリのバージョンに置き換えてください。そうでなければ、以下の例のようにCSS文を@include respond-to(all-mobile)ブロックの上に再配置してください。
-
CSSの以前の記述:
...
.component-content { @include respond-to(all-mobile) { margin: 0 10px 30px 10px; } padding: 15px; margin: 0 0 30px 0; &
, & { ... -
その後のCSS文:
...
.component-content { padding: 15px; margin: 0 0 30px 0; @include respond-to(all-mobile) { margin: 0 10px 30px 10px; } &
, & { ...
-
-
src/lib/next-config/plugins/sass.jsファイルをカスタマイズしていなければ、テンプレートアプリのバージョンに置き換えてください。そうでなければ、sassOptions設定に以下の追加プロパティを追加してください:
sassOptions: { ... quietDeps: true, silenceDeprecations: "import", "legacy-js-api", },
!注この変更は、Bootstrapからの廃止警告を抑制するための一時的な修正sassです。 bootstrapとfont-awesomeの新しいバージョンがリリースされ警告が終了すると、これら2つのプロパティは削除可能です。
自動GraphQLコード生成を無効にしてください
このセクションでは、メンテナンス終了のgraphql-letパッケージに基づくアプリのデフォルトの自動コード生成ロジックを削除する方法について説明します。特に継続する必要がない限り、これを強くお勧めしますgraphql-let。 graphql-codegenを使って手動でコード生成を実装したい場合は、ガイド に従って方法を学びましょう。
!重要すべてのアップグレードステップと同様に、このセクションの変更を行う前に、自分のアプリにカスタマイズを加える際にどのような影響があるかを認識してください。これらの指示には、graphql-codegen依存関係の除去が含まれており、手動コード生成を実装する予定がある場合は、そのままにしておくことを検討するかもしれません。
自動GraphQLコード生成を無効にするには:
-
既存のアプリケーションのpackage.jsonファイルでは:
-
以下の依存関係を削除してください:
"@graphql-typed-document-node/core": "^3.2.0", "graphql-let": "^0.18.6",
-
graphql-codegenで手動でコード生成を実装する予定がない場合は、以下の依存関係も削除してください:
"graphql": "~15.8.0", "graphql-tag": "^2.12.6", "@graphql-codegen/cli": "^5.0.0", "@graphql-codegen/import-types-preset": "^3.0.0", "@graphql-codegen/plugin-helpers": "^5.0.1", "@graphql-codegen/typed-document-node": "^5.0.1", "@graphql-codegen/typescript": "^4.0.1", "@graphql-codegen/typescript-operations": "^4.0.1", "@graphql-codegen/typescript-resolvers": "^4.0.1",
-
GraphQLの内省データ取得に、例えば 手動でGraphQLコード生成を行う際に以下のスクリプトを使いたい場合は、削除してください。
"graphql
": "ts-node --project tsconfig.scripts.json ./scripts/fetch-graphql-introspection-data.ts", -
bootstrapスクリプトがgraphql-letを参照する場合は、その参照を削除してください。以下の例は、graphql-letコールが削除された有効なbootstrapスクリプトを示しています:
"bootstrap": "ts-node --require dotenv-flow/config --project tsconfig.scripts.json scripts/bootstrap.ts",
!注これらの変更を行ったら、アプリの依存関係を更新するためにnpm installを再度実行してください。
-
-
graphql-letに関連する以下のファイルを削除してください:
- .graphql-let.yml
- /scripts/fetch-graphql-introspection-data.ts
- /src/temp/GraphQLIntrospectionResult.json
-
tsconfig.jsonファイルをカスタマイズしていなければ、テンプレートアプリのバージョンに置き換えてください。そうでなければ、compilerOptions.pathsから以下の項目を削除してください:
"graphql-types": "node_modules/@types/graphql-let/__generated__/__types__",
今後のステップ
アップグレードプロセスを最終決定するには、発生したエラーや警告を必ず解決してください。必要に応じて、JSS固有の問題に対してデバッグログを有効にし てください。