Hi zusammen,
ich bin gerade dabei unseren TYPO3-Stack auf Vordermann zu bringen und habe angefangen kleine Teile in Extensions auszulagern. Ich habe gerade unsere Lösung für Environment Variablen im Frontend in eine eigene Extension gegossen und würde mich über jede Art von Feedback freuen.
Der Usecase für die Extension sind Umgebungsvariablen die man auch (oder nur) clientseitig benötigt. Unser spezifischer Fall betrifft die Integration von Sentry. Für die backendseitige Integration liegt die DSN dafür schön in einer .env-Datei (bzw. beim Deploy in der CI). Um JS-Fehler zu fangen muss Sentry aber natürlich auch clientseitig initialisiert werden und ich hatte keinen eleganten Weg die DSN dafür bereitzustellen. Der Key ist genauso abhängig von der Umgebung wie sein backend pendant, also macht es Sinn den auch in der .env zu haben.
Die Extension nimmt jetzt alle Variablen die mit PUBLIC_
geprefixt sind und stellt sie im Frontend unter window._globals
zur Verfügung.
Ich habe in Zukunft vor noch TypeScript Support einzubauen. Bin mir noch nicht komplett sicher wie ich das löse, aber ich hätte am Ende gerne die Möglichkeit meine Variablen in TypeScirpt typsicher aufrufen zu können und vor allem den Vorteil der Autovervollständigung dabei mitzunehmen.
Was mich jetzt interessiert: Was haltet ihr von dieser Art Lösung? Wie regelt ihr sowas? Seht ihr Schwierigkeiten in dem Ansatz die ich nicht bedacht habe, oder kennt ihr elegantere Lösungen?
Falls ihr reinschauen möchtet: https://packagist.org/packages/pnodev/pno-js-globals