Wie zeige ich die App-Version in einer Winkelanwendung an? Die Version sollte aus der package.json
Datei entnommen werden
{
"name": "angular-app",
"version": "0.0.1",
...
}
In Angular 1.x habe ich dieses HTML:
<p><%=version %></p>
Im Winkel wird dies nicht als Versionsnummer gerendert, sondern nur so gedruckt, wie es ist ( <%=version %>
anstelle von 0.0.1
).
version
angular
package.json
Zbynek
quelle
quelle
typescript
, benutze esnpm start
, um die Kompilierung auszuführen undSystemJS
die Konfiguration festzulegen. Gibt es eine Möglichkeit, die Version mit einer dieser Optionen festzulegen?Antworten:
Wenn Sie die Versionsnummer in Ihrer Winkel-App verwenden / anzeigen möchten, gehen Sie wie folgt vor:
Voraussetzungen:
Angular-Datei- und Ordnerstruktur, die über Angular CLI erstellt wurde
TypeScript 2.9 oder höher! (Unterstützt ab Angular 6.1)
Schritte:
/tsconfig.json
(manchmal auch notwendig/src/tsconfig.app.json
) ermöglicht die resolveJsonModule Option (webpack dev Server - Neustart erforderlich danach):/src/app/app.component.ts
Verwenden Sie dann in Ihrer Komponente beispielsweise die Versionsinformationen:Es ist auch möglich, Schritt 2 in Ihrer Datei environment.ts auszuführen, um die Versionsinformationen von dort aus zugänglich zu machen.
Danke @Ionaru und @MarcoRinck für die Hilfe.
Diese Lösung enthält nicht den Inhalt von package.json, sondern nur die Versionsnummer.
Getestet mit Angular8 / Node10 / TypeScript3.4.3.
Bitte aktualisieren Sie Ihre Apps, um diese Lösung zu verwenden, da die ursprüngliche Lösung je nach Inhalt Ihres Pakets Sicherheitsprobleme mit sich bringen kann.
quelle
Wenn Sie Webpack oder Angular-Cli verwenden (wer verwendet Webpack), können Sie einfach package.json in Ihrer Komponente benötigen und diese Requisite anzeigen.
Und dann haben Sie Ihre Komponente
quelle
Mit der Option tsconfig
--resolveJsonModule
können Sie JSON- Dateien in Typescript importieren.In der Datei environment.ts:
Sie können jetzt
environment.VERSION
in Ihrer Anwendung verwenden.quelle
Der Versuch, DyslexicDcuks Antwort zu versuchen, führte dazu
cannot find name require
Das Lesen des Abschnitts "Optionales Laden von Modulen und andere erweiterte Ladeszenarien" in https://www.typescriptlang.org/docs/handbook/modules.html hat mir dabei geholfen, dieses Problem zu lösen. (Erwähnt von Gary hier https://stackoverflow.com/a/41767479/7047595 )
Verwenden Sie die folgende Deklaration, um package.json zu benötigen.
quelle
Einfache Lösung für Angular Cli-Benutzer.
Add
declare module '*.json';
onsrc/typings.d.ts
Und dann weiter
src/environments/environment.ts
:Getan :)
quelle
"allowSyntheticDefaultImports": true
Abhängig von Ihrer Angular-Version müssen Sie möglicherweise zu tsconfig.json hinzufügen .Es ist eine gute Idee,
version
als Umgebungsvariable zu deklarieren, damit Sie sie überall in Ihrem Projekt verwenden können. ( Insbesondere beim Laden von Dateien, die basierend auf der Version zwischengespeichert werden sollene.g. yourCustomjsonFile.json?version=1.0.0
)Um Sicherheitsprobleme zu vermeiden (wie bei @ZetaPR erwähnt) , können wir diesen Ansatz verwenden (im Kommentar von @sgwatgit).
Kurz gesagt: Wir erstellen yourProjectPath \ PreBuild.js Datei. So was:
Über dem Snippet wird eine neue Datei erstellt,
/src/environments/version.ts
die eine Konstante mit dem Namen enthält,version
und durch den aus derpackage.json
Datei extrahierten Wert festgelegt .Um den Inhalt von
PreBuild.json
on build auszuführen , fügen wir diese Datei wie folgt in den AbschnittPackage.json
->"scripts": { ... }"
ein. Also wir Projekt mit diesem Code ausführen können:npm start
:Jetzt können wir einfach die Version importieren und verwenden, wo immer wir wollen:
quelle
Typoskript
HTML
quelle
Ich glaube nicht, dass "Angle Bracket Percent" etwas mit angle1 zu tun hat. Dies ist wahrscheinlich eine Schnittstelle zu einer anderen API, von der Sie nicht wissen, dass sie in Ihrem vorherigen Projekt verwendet wird.
Ihre einfachste Lösung: Listen Sie die Versionsnummer einfach manuell in Ihrer HTML-Datei auf oder speichern Sie sie in einer globalen Variablen, wenn Sie sie an mehreren Stellen verwenden:
Ihre schwierigere Lösung: Führen Sie einen Build-Automatisierungsschritt aus, der die Versionsnummer aus Ihrer package.json-Datei extrahiert und anschließend Ihre index.html-Datei (oder js / ts-Datei) neu schreibt, um den Wert einzuschließen:
Könnte einfach die Datei package.json importieren oder benötigen, wenn Sie in einer Umgebung arbeiten, die dies unterstützt:
var version = require("../package.json").version;
Dies kann auch in einem Bash-Skript erfolgen , das die Datei package.json liest und dann eine andere Datei bearbeitet.
quelle
<% %>
zeigt normalerweise eine .Net-Sprache wie c # anIch habe versucht, dies auf eine etwas andere Art und Weise zu lösen, auch unter Berücksichtigung der Benutzerfreundlichkeit und Wartbarkeit.
Ich habe das Bash-Skript verwendet, um die Version in der gesamten Anwendung zu ändern. Das folgende Skript fragt Sie nach der gewünschten Versionsnummer und diese wird in der gesamten Anwendung angewendet.
Ich habe dieses Skript in einer Datei mit dem Namen version-manager.sh im Stammverzeichnis des Projekts gespeichert und in meiner Datei package.json ein Skript erstellt, um es auszuführen, wenn die Version geändert werden muss.
Schließlich kann ich die Version einfach durch Ausführen ändern
Dieser Befehl ändert die Version in der Vorlage index.html und auch in der Datei package.json. Es folgen die wenigen Screenshots aus meiner vorhandenen App.
quelle
Sie können package.json wie jede andere Datei lesen, mit http.get wie folgt:
quelle