Aggiungere una libreria JS esterna globalmente a tutti i Plugin e al Tema (Componenti)

Situazione

Vogliamo aggiungere questa libreria esterna logging JS alla nostra istanza di Discourse per migliorare il flusso di lavoro di debug, utilizzando questo leggero wrapper di logging che ci permette, ad esempio, di impostare un livello di log tramite log.setLevel('debug').

Questa libreria esterna dovrebbe essere disponibile in tutti i nostri plugin personalizzati, nei temi e nei componenti dei temi installati sulla nostra applicazione.

Implementazione

• Importare il JS tramite register_asset in vari plugin importerebbe il file JS più volte?
• Esiste un’alternativa di libreria JS con funzionalità simili dopo che Ember ha deprecato il suo utility di logging a favore di console.log?

Attualmente abbiamo seguito questa strada per implementarlo:

  1. Installare un plugin che importa il JS esterno e rende la libreria JS disponibile tramite l’oggetto window (window.log = log)
    • Importare la libreria JS solo una volta
    • Altri plugin/temi/componenti di tema dipenderebbero da quel plugin, e cose come i plugin open source costringerebbero gli utenti a installare entrambi i plugin

Ha senso questo approccio o suggeriresti un metodo diverso?

Questo mi sembra molto disaccoppiato… perché non creare un plugin o un componente autonomo che lo introduca e poi assicurarti semplicemente di installarlo sempre?

Sì, in realtà era quella la soluzione che abbiamo menzionato di utilizzare attualmente. Avere un unico plugin che importa il JS, mentre gli altri plugin che lo utilizzano dipendono dall’installazione di questo plugin.

Grazie per la risposta!