wake-up-neo.net

Gibt es Vorabversions-IDs für die npm-Version?

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.

12
timetowonder

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
13
MondKin

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.

1
Hellmut Adolphs

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
0
Anand S