Ich hätte einen etwas anderen, aber in gewisser Weise ähnlichen Ansatz zu Ihrem sed
-Shellscript genommen.
Ich mag die Idee der „Klartext-Konfigurationsdatei“, die Sie erwähnt haben, wie über dieses:
die Konfigurationsdatei von einem bekannten Ort dienen, zum Beispiel ./config
? Da Ihr JS bereits von der aktuellen Site geladen wurde, sollten Sie sich zumindest auf einen relativen Pfad verlassen können.
Schritt 1: Das Shellskript, das im Andockcontainer gestartet wird, schreibt die Konfigurationsparameter aus den Umgebungsvariablen in die Klartextdatei und speichert sie im selben Ordner wie der gepackte Winkelcode.
Schritt 2: In der Haupt-HTML-Datei, die die App dort lädt einige init-Code wie folgt aus:
$(function() {
$.get('./config')
.then(function(res) {
window.appConfig = res.data;
// your bootstrapping call
angular.bootstrap(....);
});
});
Schritt 3: Sie die globalen Variablen in Ihrer Winkel App verwenden, z.B. wenn Sie mit OpaqueToken:
import { OpaqueToken } from '@angular/core';
const CONFIG_TOKEN = new OpaqueToken('config');
export const THIRDPARTYLIBPROVIDERS = [
{ provide: CONFIG_TOKEN, useValue: window.appConfig }
];
Ja, das ist immer noch ein bisschen hacky & in Ihrem dev-env der Knoten-Proxy, die Sie für die Bedienung der ng-App verwenden, auch eine solche Konfiguration Endpunkt auszusetzen hat. Auch dies benötigt eine zusätzliche Anfrage, aber dies könnte leicht vermieden werden, indem der Init-Code um ein Bit erweitert wird, um die Daten in localStorage zu cachen (vorausgesetzt, dass sich diese Daten im Laufe der Zeit nicht wirklich ändern).
Aber alles in allem denke ich, das ist ein bisschen wartungsfreundlicher als sed
-ing einige Dateien, von denen Sie nicht wirklich wissen, wie sie ausgelegt sind.
Lassen Sie mich wissen, was Sie denken!
verwenden Sie angular-CLI oder eine benutzerdefinierte Build? – Riscie
haben wir das Projekt basierend auf https://github.com/AngularClass/angular2-webpack-starter/ erstellt –
Sorry, ich bin nicht kompetent, wie das mit dem werbpack-Starter Repo funktioniert. eckig-cli, die wir verwenden, hat die Option, die Sie beschreiben (Umgebungen). – Riscie