Liferay npm Bundler
liferay-npm-bundlerは、Liferayポータルをプラットフォームとして対象とし、(通常のWebアプリケーションではなく)ウィジェットからnpmパッケージを使用していることを前提とするバンドラー( Webpack または Browserify )です。
ウィジェット内でnpmパッケージを実行するためのワークフローは、標準のバンドラーとは少し異なります。 JavaScriptを単一のファイルにバンドルする代わりに、完全なWebページが組み立てられたときに、ブラウザーですべてのパッケージを リンク する必要があります。 ウィジェットは、それぞれが独自のコピーをロードするのではなく、モジュールの共通バージョンを共有できます。 liferay-npm-bundlerがこれを処理します。
また、 project’s Wiki にもliferay-npm-bundlerの情報があります。
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
ファイルの変更またはファイルの削除や移動)。
プレ、ポスト、バベルの各フェーズは、古い動作モード用に設計され、(Migrating Your Project to Use the New Mode を参照してください)新しいモードのルールに徐々に置き換えられます。
このリファレンスでは、liferay-npm-bundlerの構成、デフォルトのプリセット、形式などについて説明しています。