Jak wyświetlić wersję aplikacji w aplikacji kątowej? wersję należy pobrać z package.json
pliku
{
"name": "angular-app",
"version": "0.0.1",
...
}
W angular 1.x mam taki html:
<p><%=version %></p>
W wersji kątowej nie jest to renderowane jako numer wersji, ale po prostu drukowane tak, jak jest ( <%=version %>
zamiast 0.0.1
).
version
angular
package.json
Zbynek
źródło
źródło
typescript
, używamnpm start
do uruchamiania kompilacji iSystemJS
ustawiania konfiguracji. czy istnieje sposób na ustawienie wersji za pomocą któregokolwiek z tych?Odpowiedzi:
Jeśli chcesz używać / wyświetlać numer wersji w swojej aplikacji kątowej, wykonaj następujące czynności:
Wymagania wstępne:
Angular struktura plików i folderów utworzona za pomocą Angular CLI
TypeScript 2.9 lub nowszy! (Obsługiwane od wersji Angular 6.1)
Kroki:
/tsconfig.json
(czasami jest to również konieczne/src/tsconfig.app.json
) włącz opcję resolutionJsonModule (później wymagany jest restart serwera webpack dev):/src/app/app.component.ts
użyj na przykład informacji o wersji:Możliwe jest również wykonanie kroku 2 w pliku environment.ts, dzięki czemu informacje o wersji będą dostępne z tego miejsca.
Thx @Ionaru i @MarcoRinck za pomoc.
To rozwiązanie nie będzie zawierało zawartości package.json, a jedynie numer wersji.
Przetestowano w / Angular8 / Node10 / TypeScript 3.4.3.
Zaktualizuj swoje aplikacje, aby korzystały z tego rozwiązania, ponieważ w zależności od zawartości pliku package.json oryginalne rozwiązanie może powodować problemy z bezpieczeństwem.
źródło
Jeśli używasz webpacka lub angular-cli (który używa webpacka), możesz po prostu zażądać package.json w swoim komponencie i wyświetlić ten atrybut.
A potem masz swój komponent
źródło
Używając opcji tsconfig
--resolveJsonModule
, możesz importować pliki JSON w Typescript .W pliku environment.ts:
Możesz teraz użyć
environment.VERSION
w swojej aplikacji.źródło
Wypróbowanie odpowiedzi DyslexicDcuk zaowocowało
cannot find name require
Następnie przeczytanie sekcji „Opcjonalne ładowanie modułów i inne zaawansowane scenariusze ładowania” na stronie https://www.typescriptlang.org/docs/handbook/modules.html pomogło mi rozwiązać ten problem. (Wspomniane przez Gary'ego tutaj https://stackoverflow.com/a/41767479/7047595 )
Użyj poniższej deklaracji, aby wymagać pliku package.json.
źródło
Proste rozwiązanie dla użytkowników kątowych CLI.
Dodaj
declare module '*.json';
nasrc/typings.d.ts
A potem
src/environments/environment.ts
:Gotowe :)
źródło
"allowSyntheticDefaultImports": true
zależności od wersji Angular może być konieczne dodanie do pliku tsconfig.json.Dobrym pomysłem jest zadeklarowanie
version
jako zmienna środowiskowa, dzięki czemu można jej używać wszędzie w projekcie. (szczególnie w przypadku ładowania plików do buforowania na podstawie wersjie.g. yourCustomjsonFile.json?version=1.0.0
)Aby zapobiec problemom z bezpieczeństwem (jak wspomniano w @ZetaPR) , możemy zastosować to podejście (w komentarzu @sgwatgit)
W skrócie: tworzymy twoją ścieżkę projektu \ PreBuild.js plik. Lubię to:
Powyższy fragment utworzy nowy plik,
/src/environments/version.ts
który zawiera stałą o nazwieversion
i ustawi ją na podstawie wyodrębnionej wartości zpackage.json
pliku.Aby uruchomić zawartość
PreBuild.json
podczas kompilacji, dodajemy ten plik do sekcjiPackage.json
->"scripts": { ... }"
jak poniżej. Możemy więc uruchomić projekt używając tego kodunpm start
:Teraz możemy po prostu zaimportować wersję i używać jej w dowolnym miejscu:
źródło
Maszynopis
HTML
źródło
Nie sądzę, aby „Procent wspornika kątowego” miał coś wspólnego z angular1. Prawdopodobnie jest to interfejs do innego interfejsu API, o którym nie zdajesz sobie sprawy, że jest używany w poprzednim projekcie.
Najłatwiejsze rozwiązanie: po prostu wpisz ręcznie numer wersji w pliku HTML lub zapisz go w zmiennej globalnej, jeśli używasz jej w wielu miejscach:
Trudniejsze rozwiązanie: uruchom krok automatyzacji kompilacji, który wyodrębnia numer wersji z pliku package.json, a następnie przepisuje plik index.html (lub plik js / ts), aby zawierał wartość:
Możesz po prostu zaimportować lub wymagać pliku package.json, jeśli pracujesz w środowisku, które go obsługuje:
var version = require("../package.json").version;
Można to również zrobić w skrypcie bash, który czyta plik package.json, a następnie edytuje inny plik.
źródło
<% %>
zwykle wskazuje na język .Net, taki jak c #Próbowałem rozwiązać ten problem w nieco inny sposób, biorąc pod uwagę również wygodę i łatwość konserwacji.
Użyłem skryptu bash, aby zmienić wersję w całej aplikacji. Poniższy skrypt zapyta Cię o żądany numer wersji i to samo zostanie zastosowane w całej aplikacji.
Zapisałem ten skrypt w pliku o nazwie version-manager.sh w katalogu głównym projektu, aw moim pliku package.json utworzyłem również skrypt, który uruchamia go, gdy zajdzie potrzeba zmodyfikowania wersji.
Wreszcie mogę po prostu zmienić wersję, wykonując
To polecenie zmieni wersję w szablonie index.html, a także w pliku package.json. Poniżej przedstawiono kilka zrzutów ekranu zrobionych z mojej istniejącej aplikacji.
źródło
Możesz czytać package.json jak każdy inny plik, z http.get w ten sposób:
źródło