Comment afficher la version de l'application dans une application angulaire? la version doit être extraite du package.json
fichier
{
"name": "angular-app",
"version": "0.0.1",
...
}
Dans angular 1.x, j'ai ce html:
<p><%=version %></p>
En angulaire, ce n'est pas rendu en tant que numéro de version, mais simplement imprimé tel quel ( <%=version %>
au lieu de 0.0.1
).
version
angular
package.json
Zbynek
la source
la source
typescript
, j'utilisenpm start
pour exécuter la compilation etSystemJS
pour définir la configuration. existe-t-il un moyen de définir la version en utilisant l'un de ces éléments?Réponses:
Si vous souhaitez utiliser / afficher le numéro de version dans votre application angulaire, procédez comme suit:
Conditions préalables:
Structure de fichiers et de dossiers angulaire créée via Angular CLI
TypeScript 2.9 ou version ultérieure! (Pris en charge à partir d'Angular 6.1)
Pas:
/tsconfig.json
(parfois également nécessaire/src/tsconfig.app.json
), activez l'option ResolutionJsonModule (redémarrage du serveur de développement Webpack requis par la suite):/src/app/app.component.ts
utilisez par exemple les informations de version:Il est également possible de faire l'étape 2 dans votre fichier environment.ts, en rendant les informations de version accessibles à partir de là.
Thx @Ionaru et @MarcoRinck pour aider.
Cette solution n'inclura pas le contenu de package.json, uniquement le numéro de version.
Testé avec Angular8 / Node10 / TypeScript3.4.3.
Veuillez mettre à jour vos applications pour utiliser cette solution car selon le contenu de votre package.json, la solution d'origine peut impliquer des problèmes de sécurité.
la source
Si vous utilisez webpack ou angular-cli (qui utilise webpack), vous pouvez simplement exiger package.json dans votre composant et afficher cet accessoire.
Et puis vous avez votre composant
la source
En utilisant l'option tsconfig,
--resolveJsonModule
vous pouvez importer des fichiers json dans Typescript.Dans le fichier environment.ts:
Vous pouvez maintenant utiliser
environment.VERSION
dans votre application.la source
Essayer la réponse de DyslexicDcuk a abouti à
cannot find name require
Ensuite, la lecture de la section `` Chargement de module optionnel et autres scénarios de chargement avancés '' dans https://www.typescriptlang.org/docs/handbook/modules.html m'a aidé à résoudre ce problème. (Mentionné par Gary ici https://stackoverflow.com/a/41767479/7047595 )
Utilisez la déclaration ci-dessous pour exiger package.json.
la source
Solution simpliste pour les utilisateurs angulaires de cli.
Ajouter
declare module '*.json';
sursrc/typings.d.ts
Et puis sur
src/environments/environment.ts
:Terminé :)
la source
"allowSyntheticDefaultImports": true
à votre tsconfig.json en fonction de votre version angulaire.C'est une bonne idée de déclarer
version
comme variable d'environnement afin que vous puissiez l'utiliser partout dans votre projet. (spécialement en cas de chargement de fichiers à mettre en cache en fonction de la versione.g. yourCustomjsonFile.json?version=1.0.0
)Afin d'éviter les problèmes de sécurité (comme @ZetaPR l'a mentionné), nous pouvons utiliser cette approche (sur le commentaire de @sgwatgit)
En bref: nous créons un yourProjectPath \ PreBuild.js fichier. Comme ça:
L'extrait ci-dessus créera un nouveau fichier
/src/environments/version.ts
qui contient une constante nomméeversion
et la définira par valeur extraite dupackage.json
fichier.Afin d'exécuter le contenu de la
PreBuild.json
construction, nous ajoutons ce fichier dans la sectionPackage.json
->"scripts": { ... }"
comme suit. Nous pouvons donc exécuter le projet en utilisant ce codenpm start
::Maintenant, nous pouvons simplement importer la version et l'utiliser où nous voulons:
la source
Manuscrit
HTML
la source
Je ne pense pas que "Angle Bracket Percent" ait quoi que ce soit à voir avec angular1. Il s'agit probablement d'une interface vers une autre API dont vous ne réalisez pas qu'elle est utilisée dans votre projet précédent.
Votre solution la plus simple: listez simplement le numéro de version manuellement dans votre fichier HTML ou stockez-le dans une variable globale si vous l'utilisez à plusieurs endroits:
Votre solution la plus difficile: exécutez une étape d'automatisation de la construction qui extrait le numéro de version de votre fichier package.json, puis réécrit votre fichier index.html (ou fichier js / ts) pour inclure la valeur:
Pourrait simplement importer ou exiger le fichier package.json, si vous travaillez dans un environnement qui le prend en charge:
var version = require("../package.json").version;
Cela pourrait également être fait dans un script bash qui lit le package.json, puis édite un autre fichier.
la source
<% %>
indique généralement un langage .Net comme c #J'ai essayé de résoudre ce problème d'une manière un peu différente, compte tenu également de la facilité d'utilisation et de la maintenabilité.
J'ai utilisé le script bash pour changer la version dans toute l'application. Le script suivant vous demandera le numéro de version souhaité, et la même chose est appliquée dans toute l'application.
J'ai enregistré ce script dans un fichier nommé version-manager.sh à la racine du projet, et dans mon fichier package.json, j'ai également créé un script pour l'exécuter lorsqu'il est nécessaire de modifier la version.
Enfin, je peux simplement changer la version en exécutant
Cette commande changera la version dans le modèle index.html et également dans le fichier package.json. Voici les quelques captures d'écran prises à partir de mon application existante.
la source
Vous pouvez lire package.json comme n'importe quel autre fichier, avec http.get comme ceci:
la source