第2章 Red Hat Developer Hub のサードパーティープラグイン
サードパーティーの動的プラグインを Red Hat Developer Hub に統合すると、ソースコードを変更したり、再構築したりせずに機能を強化できます。これらのプラグインを追加するには、派生パッケージとしてエクスポートします。
プラグインパッケージをエクスポートするときは、Developer Hub 環境との関係に応じて、依存関係が正しくバンドルされているか、共有としてマークされていることを確認する必要があります。
サードパーティープラグインを Developer Hub に統合するには、以下を実行します。
- まず、プラグインのソースコードを取得します。
- プラグインを動的プラグインパッケージとしてエクスポートします。「Red Hat Developer Hub でのサードパーティープラグインのエクスポート」を参照してください。
- 動的プラグインをパッケージ化して公開します。「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」を参照してください。
- Developer Hub 環境にプラグインをインストールします。「Red Hat Developer Hub にサードパーティーのプラグインをインストールする」を参照してください。
2.1. Red Hat Developer Hub でのサードパーティープラグインのエクスポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub でプラグインを使用するには、派生動的プラグインパッケージとしてプラグインをエクスポートできます。これらのパッケージにはプラグインコードと依存関係が含まれ、Developer Hub への動的プラグイン統合の準備が整っています。
前提条件
-
@janus-idp/cliパッケージがインストールされている。最新の機能と修正との互換性は、最新バージョン (@latestタグ) を使用してください。 - Node.js と NPM がインストールされ、設定されている。
- サードパーティーのプラグインが、Red Hat Developer Hub のバージョンと互換性がある。詳細は、バージョン互換性マトリックス を参照してください。
サードパーティーのプラグインには、必要なすべてのメタデータと依存関係を含む有効な
package.jsonファイルがルートディレクトリーに存在する。- バックエンドプラグイン
動的プラグインのサポートとの互換性を確保し、動的プラグインとして使用できるようにするには、既存のバックエンドプラグインに新しい Backstage バックエンドシステムとの互換性が必要です。さらに、これらのプラグインは専用の CLI コマンドを使用して再構築する必要があります。
新しい Backstage バックエンドシステムエントリーポイント (
createBackendPlugin()またはcreateBackendModule()を使用して作成) は、メインパッケージまたはalphaパッケージ (プラグインインスタンスのサポートがalphaAPI を使用して引き続き提供されている場合) のいずれかからデフォルトのエクスポートとしてエクスポートする必要があります。これにより、プラグインインスタンスの標準プラグイン開発ガイドラインに加えて追加の要件が追加されることはありません。動的エクスポートメカニズムはプライベート依存関係を識別し、
package.jsonファイルのbundleDependenciesフィールドを設定します。このエクスポートメカニズムにより、動的プラグインパッケージが自己完結型パッケージとして公開され、そのプライベート依存関係がプライベートnode_modulesフォルダーにバンドルされることが保証されます。特定のプラグイン依存関係では、派生パッケージで特定の処理が必要になります。たとえば、以下のようになります。
共有依存関係 は RHDH アプリケーションにより提供され、動的プラグインパッケージにバンドルされずに、
package.jsonファイルにpeerDependenciesとしてリストされます。たとえば、デフォルトでは、すべての@backstageスコープパッケージが共有されます。--shared-packageフラグを使用して、Red Hat Developer Hub アプリケーションにより提供され、動的プラグインパッケージにバンドルされていないことが予想される共有依存関係を指定できます。@backstageパッケージをプライベートとして扱うには、否定接頭辞 (!) を使用します。たとえば、プラグインが Red Hat Developer Hub アプリケーションで提供されていない@backstageのパッケージに依存している場合などです。埋め込まれた依存関係 は、依存関係が最上位レベルに引き上げられた状態で動的プラグインパッケージにバンドルされます。デフォルトでは、
-nodeまたは-common接尾辞を持つパッケージが埋め込まれます。--embed-packageフラグを使用して、追加の埋め込みパッケージを指定できます。たとえば、デフォルトの命名規則に従わない同じワークスペースからのパッケージなどです。以下は、共有パッケージと埋め込みパッケージを含む動的プラグインをエクスポートする例です。
共有パッケージと埋め込みパッケージを使用した動的プラグインのエクスポートの例
npx @janus-idp/cli@latest export-dynamic-plugin --shared-package '!/@backstage/plugin-notifications/' --embed-package @backstage/plugin-notifications-backend
npx @janus-idp/cli@latest export-dynamic-plugin --shared-package '!/@backstage/plugin-notifications/' --embed-package @backstage/plugin-notifications-backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上の例では、以下のようになります。
-
@backstage/plugin-notificationsパッケージは、@backstageスコープ内にあるにもかかわらず、プライベート依存関係として扱われ、動的プラグインパッケージにバンドルされます。 -
@backstage/plugin-notifications-backendパッケージは埋め込み依存関係としてマークされ、動的プラグインパッケージにバンドルされています。
- フロントエンドプラグイン
フロントエンドプラグインは設定に
scalprumを使用できます。これは、エクスポートプロセス中に CLI により自動的に生成されます。次のコマンドを実行すると、生成されたデフォルト設定がログに記録されます。デフォルト設定をログに記録するコマンドの例
npx @janus-idp/cli@latest export-dynamic
npx @janus-idp/cli@latest export-dynamicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下はデフォルトの
scalprum設定の例です。デフォルトの
scalprum設定Copy to Clipboard Copied! Toggle word wrap Toggle overflow package.jsonファイルにscalprumセクションを追加できます。以下に例を示します。scalprumカスタマイズの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 動的プラグインでは、マウントポイントや動的ルートの静的 JSX など、Developer Hub のニーズに合わせて調整が必要になる場合があります。これらの変更はオプションですが、静的プラグインと互換性がない可能性があります。
静的 JSX を含めるには、追加のエクスポートを定義し、それを動的プラグインの
importNameとして使用します。以下に例を示します。静的および動的プラグインのエクスポートの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
プラグインをエクスポートするには、
@janus-idp/cliパッケージのpackage export-dynamic-pluginコマンドを使用します。サードパーティーのプラグインをエクスポートするコマンドの例
npx @janus-idp/cli@latest package export-dynamic-plugin
npx @janus-idp/cli@latest package export-dynamic-pluginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前のコマンドは、プラグインの JavaScript パッケージ (
package.jsonファイルを含む) のルートディレクトリーで実行してください。結果として得られる派生パッケージは、
dist-dynamicサブフォルダーに配置されます。エクスポートされたパッケージ名は、元のプラグイン名の後ろに-dynamicを追加したものです。警告派生した動的プラグイン JavaScript パッケージは、パブリック NPM レジストリーに公開することはできません。より適切なパッケージオプションは、「サードパーティーのプラグインを動的プラグインとしてパッケージ化して公開する」 を参照してください。NPM レジストリーに公開する必要がある場合は、プライベートレジストリーを使用します。