web-dev-qa-db-fra.com

Récupère le numéro de version de package.json dans React Redux (create-react-app)

OP EDIT: Si quelqu'un d'autre trouve ceci: l'application a été créée avec create-react-app , ce qui limite l'importation dans le dossier src. Toutefois, si vous mettez à niveau les scripts de réaction vers la version 1.0.11 , vous pourrez accéder à package.json.

J'essaie d'obtenir le numéro de version de package.json dans mon application.

J'ai déjà essayé ces suggestions , mais aucune d'entre elles n'a fonctionné car je ne peux pas accéder à package.json de l'extérieur du dossier src (cela peut être dû à React, je suis novice dans ce domaine). Déplacer package.json dans src signifie alors que je ne peux pas exécuter npm install, npm version minor, et npm run build de mon dossier racine. J'ai essayé d'utiliser process.env.npm_package_version mais cela aboutit à undefined.

J'utilise Jenkins, et je ne l'ai pas encore configuré pour Push the commits up, mais la seule idée que j'ai est de récupérer la version à partir des balises dans GitLab, mais je ne sais pas comment le faire, et Cela ajouterait une dépendance inutile à la prise en pension, alors j'aimerais vraiment trouver une alternative.

EDIT: Ma structure de fichier est comme:

--> RootAppFolder
    |--> build
    |--> node_modules
    |--> public
    |--> src
         |--> Components
              |--> Root.js
    |
    |--> package.json

Donc, pour accéder à package.json à partir de Root.js, je dois faire import packageJson from './../../package.json' et puis j'obtiens l'erreur suivante:

./src/components/Root.js

Module introuvable: vous avez tenté d'importer ./../../package.json qui se trouve en dehors du répertoire src/du projet. Les importations relatives en dehors de src/ne sont pas prises en charge. Vous pouvez soit le déplacer à l'intérieur de src /, soit lui ajouter un lien symbolique à partir de node_modules/du projet.

26
Baldeep

De votre édition, je suggère d'essayer

import packageJson from '/package.json';

Vous pouvez également essayer de créer un lien symbolique:

# From the project root.
cd src; ln -s ../package.json package.alias.json

Répertoriez le contenu du répertoire src et vous verrez le lien symbolique.

ls
#=> package.alias.json -> ../package.json

Ajout du .alias aide à réduire la magie des autres et de votre futur moi en regardant cela. De plus, cela aidera les éditeurs de texte à les séparer. Tu me remercieras plus tard. Assurez-vous simplement de mettre à jour votre code JS pour importer de ./package.alias.json au lieu de ./package.json.

Jetez également un coup d’œil à cette question: La restriction d’importations create-react-app en dehors du répertoire src

14
kenfire

Résoudre ce problème sans importer ni exposer package.json au create-react-app

Nécessite: version 1.1.0 + de create-react-app

.env

REACT_APP_VERSION=$npm_package_version
REACT_APP_NAME=$npm_package_name

index.js

console.log(`${process.env.REACT_APP_NAME} ${process.env.REACT_APP_VERSION}`)

Note: la version (et beaucoup d'autres param de configuration npm ) est accessible

50
talves

Essaye ça.

// in package.json
"version": "1.0.0"

// in index.js
import packageJson from '../package.json';
console.log(packageJson.version); // "1.0.0"
30
Vorathep Sumetphong