Bevor ich eine kleine Version mache und sie tagge, möchte ich die package.json aktualisieren, um die neue Version des Programms widerzuspiegeln.
Gibt es eine Möglichkeit, die Datei package.json
automatisch zu bearbeiten ?
Würde ich eine git pre-release hook
Hilfe benutzen ?
Antworten:
npm version
ist wahrscheinlich die richtige Antwort. Nur um eine Alternative zu geben, empfehle ich Grunt-Bump . Es wird von einem der Jungs von angle.js gepflegt.Verwendung:
Wenn Sie trotzdem grunzen, ist dies möglicherweise die einfachste Lösung.
quelle
npm version
?npm --no-git-tag-version version patch
.Richtige Antwort
Dazu einfach
npm version patch
=)Meine alte Antwort
Es gibt
pre-release
ursprünglich keinen Haken ingit
. Zumindest zeigtman githooks
es nicht.Wenn Sie beispielsweise
git-extra
( https://github.com/visionmedia/git-extras ) verwenden, können Sie einenpre-release
von ihm implementierten Hook verwenden, wie Sie unter https://github.com/visionmedia/ sehen können. Git-Extras / Blob / Master / Bin / Git-Release . Es wird nur eine.git/hook/pre-release.sh
ausführbare Datei benötigt, die Ihrepackage.json
Datei bearbeitet . Das Festschreiben, Drücken und Markieren erfolgt über dengit release
Befehl.Wenn Sie keine Erweiterung für verwenden
git
, können Sie ein Shell-Skript schreiben (ich werde es benennengit-release.sh
) und dann einen Alias fürgit release
Folgendes erstellen:git config --global alias.release '!sh path/to/pre-release.sh $1'
Sie können dann verwenden,
git release 0.4
was ausgeführt wirdpath/to/pre-release.sh 0.4
. Ihr Skript kannpackage.json
das Tag bearbeiten , erstellen und auf den Server übertragen.quelle
git release
aktualisiert den package.json entsprechend ... github.com/visionmedia/git-extras/issues/150 : D.git/hooks/pre-release.sh
mit:echo -e "{\n\"version\": "$1"\n}" > package.json
und versuchen Sie es mitgit release $version
npm version patch
odernpm version 0.3.1
wird es lösen! Könnten Sie Ihre Antwort entsprechend aktualisieren? ty !!Das mache ich normalerweise mit meinen Projekten:
In der ersten Zeile
npm version patch
wird die Patch-Version um 1 (xx1 bis xx2) Zoll erhöhtpackage.json
. Anschließend fügen Sie alle Dateien hinzu - einschließlichpackage.json
der Dateien, die zu diesem Zeitpunkt geändert wurden. Dann das üblichegit commit
undgit push
schließlichnpm publish
das Modul veröffentlichen.Ich hoffe das macht Sinn...
Merc.
quelle
npm version patch
begeht sich das Commit selbst; Um das Tag auf Github zu verschieben, müssen Sie dies jedoch auch tungit push --tags
.npm version patch
stößt die Versionsnummer an undnpm version patch
legt nichts für mich fest.npm version
.Um einen aktuelleren Ansatz zu geben.
package.json
Dann führen Sie es aus:
Welches wird:
... Tests durchführen ...
Ändern Sie Ihre
package.json
zu einer nächsten Nebenversion (zB: 1.8.1 bis 1.9.0)Schieben Sie Ihre Änderungen
Erstellen Sie eine neue Git-Tag-Version und
Veröffentlichen Sie Ihr npm-Paket.
--force
ist zu zeigen, wer der Boss ist! Witze beiseite siehe https://github.com/npm/npm/issues/8620quelle
"deploy-minor": "npm version minor --force -m \"version %s\""
so dass Sie sich nur annpm run deploy-minor
:) erinnern müssenAls Ergänzung
npm version
können Sie das--no-git-tag-version
Flag verwenden, wenn Sie einen Versions-Bump, aber kein Tag oder ein neues Commit wünschen:https://docs.npmjs.com/cli/version
quelle
Wenn Sie Garn verwenden, können Sie verwenden
Dadurch wird die
package.json
Version um Patches erhöht(0.0.x)
, festgeschrieben und mit dem Format versehenv0.0.0
Ebenso können Sie kleinere oder größere Versionen mit verwenden
--minor
oder--major
Stellen Sie beim Drücken auf Git sicher, dass Sie auch die Tags mit drücken
--follow-tags
Sie können auch ein Skript dafür erstellen
Führen Sie es einfach durch Eingabe aus
yarn release-it
quelle
Ich benutze Husky und Git-Branch- Is :
Ab Husky v1 +:
Vor Husky V1:
Lesen Sie mehr über die npm-Version
Webpack oder Vue.js.
Wenn Sie webpack oder Vue.js verwenden, können Sie dies in der Benutzeroberfläche mithilfe der automatischen Injektionsversion - Webpack-Plugin anzeigen
NUXT
In
nuxt.config.js
:In Ihrem
template
zum Beispiel in der Fußzeile:quelle
postmerge
, aber es befindet sich jetztpost-merge
in derhusky: {hooks:{}}
Konfiguration. Mit welchem Problem haben Siegit-branch-is
?Ich möchte den Antworten auf diese Frage etwas Klarheit verleihen.
Auch wenn es hier einige Antworten gibt, die das Problem richtig angehen und eine Lösung bieten, sind sie nicht die richtigen. Die richtige Antwort auf diese Frage ist zu verwenden
npm version
Ja, was Sie tun können, um dies zu erreichen, ist, den
npm version
Befehl bei Bedarf auszuführen. Sie können hier mehr darüber lesen. Npm-Version , aber die Basisverwendung wärenpm version patch
und es würde die 3. Ziffernreihenfolge zu Ihrerpackage.json
Version hinzufügen (1.0. X ).Sie können konfigurieren, dass der
npm version
Befehl nach Bedarf auf dem Pre-Release-Hook ausgeführt wird. Dies hängt jedoch davon ab, ob Sie dies in Ihrer CD / CI-Pipe benötigen oder nicht. Ohne dennpm version
Befehl kann eingit pre-release
Hook jedoch nichts "leichtes" ausführen. mit dempackage.json
Der Grund
npm version
für die richtige Antwort ist folgender:package.json
er verwendet,npm
wenn er sie verwendetnpm
, hat er Zugriff auf dienpm scripts
.npm scripts
, hat er Zugang zunpm version
Befehl.Die anderen Antworten, in denen andere Tools vorgeschlagen werden, sind falsch.
gulp-bump
funktioniert, erfordert aber ein weiteres zusätzliches Paket, das langfristig zu Problemen führen kann (Punkt 3 meiner Antwort)grunt-bump
funktioniert, erfordert aber ein weiteres zusätzliches Paket, das langfristig zu Problemen führen kann (Punkt 3 meiner Antwort)quelle
Zunächst müssen Sie die Regeln für die Aktualisierung der Versionsnummer verstehen. Sie können mehr über die semantische Version lesen hier.
Jede Version hat eine xyz-Version, in der sie für verschiedene Zwecke definiert wird (siehe unten).
Um die Skripte auszuführen, können Sie sie in Ihrer package.json definieren.
In Ihrem Terminal müssen Sie nur npm entsprechend Ihren Anforderungen wie ausführen
Wenn Sie es in git repo ausführen, ist die Standardversion von git-tag true. Wenn Sie dies nicht möchten, können Sie den folgenden Befehl in Ihre Skripte einfügen:
für zB:
"npm --no-git-tag-version version major && ng build --prod"
quelle
Ich habe ein Tool erstellt , das eine automatische semantische Versionierung basierend auf den Tags in Festschreibungsnachrichten durchführen kann, die als Änderungstypen bezeichnet werden. Dies folgt eng der Angular Commit Message Convention zusammen mit der Semantic Versioning Specification.
Mit diesem Tool können Sie die Version in package.json mithilfe der npm-CLI automatisch ändern (dies wird hier beschrieben ).
Darüber hinaus kann es aus diesen Commits ein Änderungsprotokoll erstellen und verfügt über ein Menü (mit einer Rechtschreibprüfung für Commit-Nachrichten) zum Erstellen von Commits basierend auf dem Änderungstyp. Ich empfehle dringend, es auszuprobieren und in den Dokumenten zu lesen, um alles zu sehen, was damit erreicht werden kann.
Ich habe das Tool geschrieben, weil ich nichts gefunden habe, das meinen Anforderungen an meine CICD-Pipeline zur Automatisierung der semantischen Versionierung entsprach. Ich möchte mich lieber auf die tatsächlichen Änderungen konzentrieren als auf die Version, und dort spart mein Tool den Tag.
Weitere Informationen zu den Gründen für das Tool finden Sie hier .
quelle