Liferay npm Bundler (Deprecated)
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

OSGiバンドルとnpmパッケージ構造

重要

Liferay npm バンドラーは Liferay 2024.Q4/Portal GA129 で廃止され、将来削除される予定です。

JavaScript モジュールをデプロイするには、プロジェクトの node_modules フォルダーから抽出した npm 依存関係を使用して OSGi バンドルを作成し、それらを Liferay AMD Loaderで動作するように変更する必要があります。 liferay-npm-bundlerはこのプロセスを自動化し、以下のようなバンドルを作成します。

  • my-bundle/
    • META-INF/
      • resources/
        • package.json
          • name: my-bundle-package
          • バージョン:1.0.0
          • main: lib/index
          • 依存関係:
            • my-bundle-package$isarray: 2.0.0
            • my-bundle-package$isobject: 2.1.0
        • lib/
          • index.js
        • node_modules/
          • my-bundle-package$isobject@2.1.0/
            • package.json
              • name: my-bundle-package$isobject
              • バージョン:2.1.0
              • main: lib/index
              • 依存関係:
                • my-bundle-package$isarray: 1.0.0
          • my-bundle-package$isarray@1.0.0/
            • package.json
              • name: my-bundle-package$isarray
              • バージョン:1.0.0
          • my-bundle-package$isarray@2.0.0/
            • package.json
              • name: my-bundle-package$isarray
              • バージョン: 2.0.0

node_modules 内のパッケージはnpmツールと同じ形式で、標準の node_modules フォルダーから(AMDへの変換などの処理後に)コピーできます。 node_modules フォルダーは、任意の数のnpmパッケージ(同じパッケージの異なるバージョンであっても)を保持するか、npmパッケージをまったく保持できません。

これでnpmパッケージを含むOSGiバンドルの構造がわかったと思うので、津次はliferay-npm-bundlerがインラインJavaScriptパッケージを処理する方法について説明します。

インラインJavaScriptパッケージ

liferay-npm-bundlerが作成する結果のOSGiバンドルは、1つのインラインJavaScriptパッケージ(例では my-bundle-package という名前)と、 node_modules フォルダ内に配置された複数のnpmパッケージを、フォルダごとに1つずつデプロイするように構成されています。

インラインパッケージは、OSGi標準の META-INF/resources フォルダにネストされ、標準のnpm package.json ファイルで定義されます。

インラインパッケージはオプションですが、1つのOSGiバンドルにつき1つのインラインパッケージしか許可されません。 OSGiバンドルに含まれている場合、インラインパッケージは通常、ウィジェットのJavaScriptコードを提供します。 なお、このアーキテクチャでは、公開後のインラインパッケージとnpmパッケージを区別していません。 インラインパッケージは、組織的な目的でのみ使用されます。

これでliferay-npm-bundlerがどのようにしてnpmパッケージのOSGiバンドルを作成するかがわかりましたね。