問題
- Liferay ワークスペースに React モジュールを追加した後、(通常はタイムアウトによる) 一貫したビルドの失敗が見られます。 回避策として、十分な時間が与えられた場合 (つまり、
LCP_CI_BUILD_TIMEOUT_MINUTES
をデフォルトの 30 分ではなく複数時間に設定することによって) ビルドは成功しますが、同じビルドをローカルでコンパイルすると、より迅速に完了することができます (両方ともデフォルトの NPM ノード パッケージ マネージャーを使用しています)。 - CI のインフラ サービス内でビルド時間を短縮することは可能ですか?
Environment
- Liferay Experience Cloud - 自己管理型
解決策
- 一部の環境 (特に多くのフロントエンド モジュールが含まれている環境) では、NPM の代わりに Yarn を使用するように Liferay ワークスペースを切り替えることで、ビルド時間を大幅に短縮できます。 これは、gradle.properties ファイルで次のプロパティを設定することで実行できます。
liferay.workspace.node.package.manager=yarn
追加情報
- このような場合、初期の遅さは、キャッシングが新しいワークスペースで使用されていないときに NPM がアーティファクトを処理する方法が原因である可能性があります (Liferay Experience Cloud - SM CI ビルドの場合)。 node_modules フォルダーが含まれているため、各モジュール ビルドは最終的に必要なアーティファクトをダウンロードし、アーティファクトが複数のモジュールに必要な場合はダウンロードを複数回繰り返します (より多くのモジュールがワークスペースに追加されると複雑になります)。 Yarn を使用する場合、キャッシュが含まれるため、React の コピーが 1 つだけダウンロードされ、すべてのモジュール ビルドで再利用されます。
- Yarn と NPM の切り替えは 1:1 の置き換えではないため (Yarn と NPM の解決方法が異なるため)、推移的な依存関係を解決する必要がある場合もあります。
-
詳細については、次のドキュメントを参照してください。
- ブログ投稿: Yarn ワークスペースを組み込むことにより、Liferay Gradle ワークスペースで JS ビルドを最適化する (ブログ投稿は Liferay サポートによって維持またはサポートされていないことに注意してください)
- Liferay Workspace
- Liferay Workspace の環境設定の設定
- フロントエンド リファレンスの紹介