Existe-t-il un moyen d'obtenir la version définie package.json
dans une application nodejs? Je voudrais quelque chose comme ça
var port = process.env.PORT || 3000
app.listen port
console.log "Express server listening on port %d in %s mode %s", app.address().port, app.settings.env, app.VERSION
node.js
npm
version
versioning
Abhik Bose Pramanik
la source
la source
console.log(process.version)
Réponses:
J'ai trouvé que le fragment de code suivant fonctionnait le mieux pour moi. Puisqu'il utilise
require
pour charger lepackage.json
, il fonctionne quel que soit le répertoire de travail actuel.Un avertissement, gracieuseté de @Pathogen:
la source
require('root-require')('package.json').version
Error: Cannot find module 'package.json'
.Si votre application est lancée avec 'npm start', vous pouvez simplement utiliser:
Voir package.json vars pour plus de détails.
la source
npm run …
) la version sera dans la variable d'environnement$npm_package_version
.npm start
, mais pas au sein d'une application électronique intégrée: pour cela, vous pouvez le trouver dansapp.getVersion
.À l'aide des modules ES6, vous pouvez effectuer les opérations suivantes:
la source
Ou en plaine ancienne:
Cela peut être raccourci
Même si ce n'est pas exactement la question posée, c'est utile si vous voulez utiliser la version en
package.json
elle-même, par exemple pour vous connecter à un fichier versionné dans unscript
:la source
Il existe deux façons de récupérer la version:
package.json
et obtenir la version:S'il vous plaît ne pas utiliser
JSON.parse
,fs.readFile
,fs.readFileSync
et ne pas utiliser une autre ,npm modules
il est pas nécessaire pour cette question.la source
npm_*
valeurs d'environnement ne sont alors disponibles que si votre script a été démarré par NPM, par exemplenpm start
. Si vous le faitesnode app.js
ou similaire, ils ne seront pas présents.package.json
?Voici comment lire la version de package.json:
la source
require() introduces? (for instance, does
exigent que () `ne supporte pas la lecture utf8? comme votre extrait peut le suggérer)require()
met en cache le fichier, ce qui dans ce cas ne devrait pas faire de différence.JSON.parse(fs.readFileSync('package.json', 'utf8'))
plutôt que dedelete require.cache[require.resolve('package.json')]; require('package.json')
vouloir recharger?Il existe une autre façon de récupérer certaines informations de votre
package.json
fichier, à savoir en utilisant le module pkginfo .L'utilisation de ce module est très simple. Vous pouvez obtenir toutes les variables de package en utilisant:
Ou seulement certains détails (
version
dans ce cas)Et vos variables de package seront définies sur
module.exports
(donc le numéro de version sera accessible viamodule.exports.version
).Vous pouvez utiliser l'extrait de code suivant:
Ce module a une fonctionnalité très intéressante - il peut être utilisé dans n'importe quel fichier de votre projet (par exemple dans les sous-dossiers) et il récupérera automatiquement les informations de votre
package.json
. Vous n'avez donc pas à vous soucier où vous êtespackage.json
.J'espère que cela aidera.
la source
module
t-il ici?module
n'est pas cette variable d'exemple spécifique; c'est une variable représentant le module courant dans node.js. Vous pouvez en savoir plus sur les modules node.js ici: nodejs.org/api/modules.html#modules_the_module_objectPour ceux qui recherchent une solution côté client sûre qui fonctionne également côté serveur, il y a genversion . Il s'agit d'un outil en ligne de commande qui lit la version à partir du package.json le plus proche et génère un fichier de module CommonJS importable qui exporte la version. Avertissement: je suis un mainteneur.
Je reconnais que la sécurité côté client n'était pas l'intention principale d'OP, mais comme discuté dans les réponses de Mark Wallace et août , c'est très pertinent et c'est aussi la raison pour laquelle j'ai trouvé ce Q&R.
la source
Je viens d'ajouter une réponse parce que je suis venu à cette question pour voir la meilleure façon d'inclure la version de package.json dans mon application Web.
Je sais que cette question est ciblée pour Node.js cependant, si vous utilisez Webpack pour regrouper votre application, juste un rappel, la méthode recommandée consiste à utiliser DefinePlugin pour déclarer une version globale dans la configuration et la référencer. Vous pourriez donc faire dans votre
webpack.config.json
Et puis
AppVersion
est maintenant un global qui est disponible pour vous d'utiliser. Assurez- vous également que.eslintrc
vous l'ignorez via l'accessoire globalla source
Option 1
La meilleure pratique consiste à effectuer une version à partir de package.json à l'aide des variables d'environnement npm.
plus d'informations sur: https://docs.npmjs.com/using-npm/config.html
Cela ne fonctionnera que lorsque vous démarrez votre service à l'aide de la commande NPM.
Option 2
Définition de la version dans la variable d'environnement en utilisant https://www.npmjs.com/package/dotenv en tant que
.env
fichier et en la considérant dansprocess.env.version
la source
Vous pouvez utiliser ES6 pour importer package.json pour récupérer le numéro de version et sortir la version sur la console.
la source
Pour déterminer la version du package dans le code de nœud, vous pouvez utiliser les éléments suivants:
const version = require('./package.json').version;
pour <versions ES6import {version} from './package.json';
pour la version ES6const version = process.env.npm_package_version;
si l'application a été démarrée à l'aidenpm start
, toutes les variables d'environnement npm_ * deviennent disponibles.Vous pouvez également utiliser les packages npm suivants - root-require, pkginfo, project-version.
la source
Vous pouvez utiliser le package de version projet .
alors
Il utilise
process.env.npm_package_version
mais se replie sur la version écrite dans lepackage.json
cas où la var env serait manquante pour une raison quelconque.la source
Pourquoi ne pas utiliser la résolution requise ...
Avec cette approche, travaillez pour tous les sous-chemins :)
la source
Je fais ça avec
findup-sync
:la source
package.json
, similaire au fait deprocess.env.npm_package_version
ne pas exiger qu'elle soit démarrée via npm. Donc, essayer d'obtenir la version de votre bibliothèque obtiendrait en fait la version de l'appelant. Un simple besoin ('./ package.json') éviterait cela.Je sais que ce n'est pas l'intention du PO, mais je devais juste le faire, alors j'espère que cela aidera la prochaine personne.
Si vous utilisez docker-compose pour votre processus CI / CD, vous pouvez l'obtenir de cette façon!
pour l'image, vous pouvez utiliser n'importe quelle image de nœud. J'utilise l'alpin car c'est le plus petit.
la source
Importez votre
package.json
fichier dans votreserver.js
ouapp.js
puis accédez aux propriétés package.json dans le fichier serveur.La variable de package contient toutes les données de package.json.
la source
J'ai créé un code utile pour obtenir le package du module parent.json
la source
Si vous utilisez le cumul, le
rollup-plugin-replace
plug - in peut être utilisé pour ajouter la version sans exposer package.json au client.Ensuite, dans le code source, n'importe où où vous voulez avoir la version package.json, vous utiliseriez la chaîne 'MY_PACKAGE_JSON_VERSION'.
la source