OP EDIT: Wenn jemand anderes darauf stößt: Die App wurde mit create-react-app erstellt , wodurch der Import in den src-Ordner beschränkt wird. Wenn Sie jedoch React-Scripts auf Version 1.0.11 aktualisieren , können Sie auf package.json zugreifen.
Ich versuche, die Versionsnummer von package.json in meiner App abzurufen.
Ich habe diese Vorschläge bereits ausprobiert , aber keiner von ihnen hat funktioniert, da ich von außerhalb des src-Ordners nicht auf package.json zugreifen kann (möglicherweise aufgrund von React, ich bin neu in diesem Bereich). Das Verschieben von package.json in src bedeutet dann, dass ich nicht ausführen npm install
kann npm version minor
, und zwar npm run build
aus meinem Stammordner. Ich habe versucht, process.env.npm_package_version
aber das führt zu undefiniert.
Ich verwende Jenkins und habe es noch nicht eingerichtet, um die Commits zu beschleunigen, aber die einzige Idee, die ich habe, ist, die Version von den Tags in GitLab zu erhalten, aber ich habe keine Ahnung, wie das geht, und das auch würde dem Repo unnötige Abhängigkeiten hinzufügen, daher würde ich wirklich gerne eine Alternative finden.
EDIT: Meine Dateistruktur ist wie folgt:
--> RootAppFolder
|--> build
|--> node_modules
|--> public
|--> src
|--> Components
|--> Root.js
|
|--> package.json
Um von root.js auf package.json zuzugreifen, muss import packageJson from './../../package.json'
ich Folgendes tun und erhalte dann die folgende Fehlermeldung:
./src/components/Root.js
Modul nicht gefunden: Sie haben versucht, ./../../package.json zu importieren, das außerhalb des Verzeichnisses src / des Projekts liegt. Relative Importe außerhalb von src / werden nicht unterstützt. Sie können es entweder in src / verschieben oder einen Symlink aus den node_modules / des Projekts hinzufügen.
quelle
package.json
darauf zugegriffen werden kann, kann die Versionsnummer leicht abgerufen werden.Antworten:
Von Ihrer Bearbeitung würde ich vorschlagen, es zu versuchen
import packageJson from '/package.json';
Sie können auch versuchen, einen Symlink zu erstellen:
# From the project root. cd src; ln -s ../package.json package.alias.json
Listen Sie den Inhalt des src-Verzeichnisses auf und Sie sehen den Symlink.
ls #=> package.alias.json -> ../package.json
Das Hinzufügen der
.alias
hilft, die Magie für andere und Ihr zukünftiges Selbst zu reduzieren, wenn Sie dies betrachten. Außerdem hilft es Texteditoren, sie auseinander zu halten. Du wirst mir später danken. Stellen Sie einfach sicher, dass Sie Ihren JS-Code aktualisieren, um ihn./package.alias.json
anstelle von zu importieren./package.json
.Schauen Sie sich auch diese Frage an: Die Import-React-App importiert die Einschränkung außerhalb des src-Verzeichnisses
quelle
react-scripts
können Sie von außerhalb importierensrc
.Die Lösung dieses ohne Import und das Aussetzen
package.json
an diecreate-react-app
Benötigt: Version 1.1.0+ der Create - React -App
.env
index.js
console.log(`${process.env.REACT_APP_NAME} ${process.env.REACT_APP_VERSION}`)
Hinweis: Auf die Version (und viele andere npm-Konfigurationsparameter ) kann zugegriffen werden
Hinweis 2: Änderungen an der
.env
Datei werden erst nach einem Neustart des Entwicklungsservers ausgewähltquelle
.env
(als reine Textdatei) im Repository-Stammverzeichnis erstellen , damit es funktioniert. mag espackage.json
Datei mitimport { name, version } from "../package.json";
ist weniger kryptisch und erfordert kein Erstellen einer.env
Datei.src/
.npm start
nach dem Wechsel erneut zu.env
NEXT_PUBLIC_APP_VERSION=$npm_package_version
Ich habe gerade festgestellt, dass in einer .env-Datei auch für next.js (ich verwende 9.5.3) funktioniert, obwohl ich es nirgendwo dokumentiert sehe.Versuche dies.
// in package.json "version": "1.0.0" // in index.js import packageJson from '../package.json'; console.log(packageJson.version); // "1.0.0"
quelle
import { version } from '../package.json';
Ich denke nicht, dass es richtig ist, eine Version per 'Import' oder 'Require' Paket zu erhalten. Sie können ein Skript in Ihre package.json einfügen
"start": "REACT_APP_VERSION=$npm_package_version react-app-script start",
Sie können es über "process.env.REACT_APP_VERSION" in beliebigen js-Dateien erhalten.
Es funktioniert auch in Build-Skripten wie folgt:
"build": "REACT_APP_VERSION=$npm_package_version react-app-script build",
quelle