Es gibt einen sehr praktischen npm version
Befehl. Neben Argumenten wie major
, minor
und patch
werden auch Argumente wie prerelease
, prepatch
usw. akzeptiert.
In den Dokumenten heißt es, dass die Befehle gemäß der Funktion semver.inc
funktionieren.
Diese pre
Befehle, zu denen ich eine Frage habe.
Angenommen, ich bin gerade in der Version v1.0.0
.
Wenn ich npm version prerelease
ausführe, wird die Version an v1.0.1-0
angehängt.
Ist es möglich, ein zusätzliches Argument für eine Vorabversionskennung gemäß https://github.com/npm/node-semver#prerelease-identifiers bereitzustellen?
Ich wünschte, so etwas wie npm version prerelease alpha
würde die Version an v1.0.1-alpha.0
anhängen, aber das funktioniert nicht.
Ab npm 6.4.0 können Sie die --preid
-Option von npm version
folgendermaßen verwenden:
$ npm version prerelease --preid=alpha
v0.1.1-alpha.0
$ npm version prerelease --preid=alpha
v0.1.1-alpha.1
$ npm version prerelease --preid=alpha
v0.1.1-alpha.2
Ich habe mir das kürzlich angesehen, um zu sehen, ob es irgendwelche Aktualisierungen in dieser Angelegenheit gab ... aber es scheint, dass die Dinge immer noch die gleichen sind.
Nein, es gibt keine Vorabversions-IDs für die npm-Version, die vom Befehl npm version unterstützt werden. Die Argumentation des Teams finden Sie hier: https://github.com/npm/npm/pull/12936#issuecomment-248153743
semver ( https://www.npmjs.com/package/semver ) unterstützt das, was Sie versuchen, also können Sie die Version mit einem Befehl wie diesem erhalten:
semver <current version> -i prerelease --preid <prelease identifier>
zum Beispiel:
semver 1.0.1 -i prerelease --preid alpha
wird herstellen:
1.0.2-alpha.0
Mit diesem Ergebnis können Sie es an die npm-Version übergeben (zum Beispiel in einem CI-Build):
npm version <resulting version from semver command>
Eine andere Alternative ist die Verwendung von semantic-release (ein unabhängiges Projekt): https://github.com/semantic-release/semantic-release
Das wird die semantische Versionierung basierend auf Commit-Nachrichten automatisieren, aber ich denke, es funktioniert nur mit von Github Repo gehosteten Modulen, da ich mir nicht sicher bin.
Wie die andere Antwort, die erwähnt wurde, wird dies von npm aus dem in diesem Kommentar genannten Grund nicht unterstützt.
Mit den Skripten semver package und npm können Sie dasselbe erreichen, indem Sie dem package.json
Folgendes hinzufügen:
"scripts": {
"beta-version-patch": "npm version $(semver $npm_package_version -i prerelease --preid beta)",
"beta-version-minor": "npm version $(semver $npm_package_version -i preminor --preid beta)",
"beta-version-major": "npm version $(semver $npm_package_version -i premajor --preid beta)",
"rc-version": "npm version $(semver $npm_package_version -i prerelease --preid rc)",
"final-release": "npm version $(semver $npm_package_version -i)"
}
und npm run beta-version-patch
ausführen
Um allgemeiner zu sein, können Sie Folgendes verwenden:
"scripts": {
"semver": "npm version $(semver $npm_package_version -i $release --preid $preid)"
}
und führe Befehle aus wie:
release=prerelease preid=alpha npm run semver
release=prerelease preid=beta npm run semver
release=premajor preid=alpha npm run semver