すべてのプラグインとテーマ(コンポーネント)に外部 JS ライブラリをグローバルに追加する

状況

Discourse インスタンスに外部の logging JS ライブラリを追加し、log.setLevel('debug') などでログレベルを設定できる軽量なログラッパーを活用して、デバッグワークフローを改善したいと考えています。

この外部ライブラリは、アプリにインストールされているすべてのカスタムプラグイン、テーマ、テーマコンポーネントで利用可能である必要があります。

実装について

• 複数のプラグインで register_asset を通じて JS をインポートすると、JS ファイルが複数回読み込まれてしまうのでしょうか?
Ember が console.log の採用によりログユーティリティを非推奨とした後、同様の機能を持つ代替の JS ライブラリは存在するでしょうか?

現在、以下の手順で実装を進めています。

  1. 外部 JS をインポートするプラグインをインストールし、JS ライブラリを window オブジェクト経由で利用可能にする(window.log = log
    • JS ライブラリは 1 回だけインポート
    • 他のプラグイン、テーマ、テーマコンポーネントはそのプラグインに依存することになり、オープンソースのプラグインの場合、ユーザーに両方のプラグインのインストールを強制してしまう可能性があります

このアプローチは妥当でしょうか、それとも別の方法を推奨されますか?

これは非常に疎結合に感じられますね…これを導入するスタンドアロンのプラグインやコンポーネントを作成し、常にそれをインストールするようにすればよいのではないでしょうか?

「いいね!」 2

はい、実はそれが現在私たちが採用している解決策です。JS をインポートする 1 つのプラグインを持ち、他のプラグインはそのプラグインのインストールに依存するようにしています。

ご返信ありがとうございます!

「いいね!」 2