Liferay npm Bundler
Liferay npm バンドラーは Liferay 2024.Q4/Portal GA129 で廃止され、将来削除される予定です。
liferay-npm-bundler は、Liferay Portal をプラットフォームとしてターゲットとし、(一般的な Web アプリケーションではなく)ウィジェットから npm パッケージを使用することを前提とするバンドラーです( Webpack や Browserifyなど)。
ウィジェット内でnpmパッケージを実行するためのワークフローは、標準のバンドラーとは少し異なります。 JavaScriptを単一のファイルにバンドルする代わりに、完全なWebページが組み立てられたときに、ブラウザーですべてのパッケージを リンク する必要があります。 ウィジェットは、それぞれが独自のコピーをロードするのではなく、モジュールの共通バージョンを共有できます。 liferay-npm-bundlerがこれを処理します。
liferay-npm-bundler に関する情報は、 プロジェクトの Wikiでも見つかります。
Liferay npmバンドラーが内部でどのように機能するか
liferay-npm-bundlerはウィジェットプロジェクトを取得し、そのファイル(npmパッケージを含む)をビルドフォルダーに出力するため、標準のウィジェットビルド(Gradle)でOSGiバンドルを生成できます。 ビルド フォルダーの構造の詳細については、 OSGi バンドルと npm パッケージ構造 リファレンスを参照してください。
liferay-npm-bundlerは、以下のプロセスを使用してOSGiバンドルを作成します。
-
プロジェクトの
package.jsonファイルを出力ディレクトリにコピーします。 -
プロジェクトの依存関係ツリーを走査して、その依存関係を判別します。
-
プロジェクトの場合、
a. ルールを介して、
.npmbundlerrc構成で指定されたソースファイルを実行します。b. 構成されたプラグインを使用してプロジェクトのパッケージを前処理します。
c. プロジェクト内の各
.jsファイルに対して、構成されたプラグインを使用して Babel を実行します。d. 構成されたプラグインを使用してプロジェクトパッケージを後処理します。
-
npmパッケージの依存関係ごとに、
a. npmパッケージを出力フォルダーにコピーし、バンドル名の前に付けます。 バンドルは、標準のnode_modulesツリー形式ではなく、プレーン バンドル名$package@バージョン 形式でパッケージを保存することに注意してください。 何がコピーされるかを判別するために、バンドラーはプラグインを呼び出してパッケージファイルリストをフィルタリングします。
b. パッケージファイルに対してルールを実行します。
c. 設定済みのプラグインを使用してnpmパッケージを前処理します。
d. npm パッケージ内の各
.jsファイルに対して、構成されたプラグインを使用して Babel を実行します。e. 構成されたプラグインを使用してnpmパッケージを後処理します。
前処理ステップと後処理ステップの間の唯一の違いは、それらがいつ実行されるかだけです(それぞれ、Babelが実行される前か後か)。 このワークフローの実行中、liferay-npm-bundlerは構成されたすべてのプラグインを呼び出し、npmパッケージで変換を実行できるようにします(たとえば、 package.json ファイルの変更またはファイルの削除や移動)。
事前フェーズ、事後フェーズ、Babel フェーズは古い動作モード用に設計されたものであり (詳細については、「 新しいモードを使用するためのプロジェクトの移行 」を参照してください)、徐々に新しいモードのルールに置き換えられます。
このリファレンスでは、liferay-npm-bundlerの構成、デフォルトのプリセット、形式などについて説明しています。