web-dev-qa-db-ja.com

npmバージョンのプレリリース識別子はありますか?

非常に便利な npm version コマンドがあります。 majorminorpatchなどの引数に加えて、prereleaseprepatchなどの引数を受け入れます。
ドキュメントには、コマンドが semver.inc 関数に従って機能することが記載されています。

これらのpreコマンドについて質問があります。

現在バージョンv1.0.0を使用しているとしましょう。
npm version prereleaseを実行すると、バージョンがv1.0.1-0にバンプされます。

https://github.com/npm/node-semver#prerelease-identifiers に従って、プレリリース識別子に追加の補足を提供することは可能ですか?

npm version prerelease alphaのようなものがバージョンをv1.0.1-alpha.0にバンプすることを望みますが、それは機能しません。

20
timetowonder

npm 6.4.以降、--preidnpm versionオプションを次のように使用できます。

$ 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
28
MondKin

私は最近これを見て、問題の更新があるかどうかを確認しています...しかし、状況は同じようです。

いいえ、npm versionコマンドでサポートされているnpmバージョンプレリリース識別子はありません。チームの推論はここにあります: https://github.com/npm/npm/pull/12936#issuecomment-24815374

semver( https://www.npmjs.com/package/semver )は、実行しようとしていることをサポートしているため、次のようなコマンドでバージョンを取得できます。

semver <current version> -i prerelease --preid <prelease identifier>

例えば:

semver 1.0.1 -i prerelease --preid alpha

生成されます:

1.0.2-alpha.0

その結果で、次のように、それをnpmバージョン(たとえば、CIビルドで)に渡すことができます。

npm version <resulting version from semver command>

別の方法は、セマンティックリリース(独立したプロジェクト)を使用することです: https://github.com/semantic-release/semantic-release

これはコミットメッセージに基づいてセマンティックバージョニングを自動化しますが、github repoがホストするモジュールでのみ機能すると思います。

2
Hellmut Adolphs

言及されている他の回答と同様に、これはnpmではサポートされていません-これに言及されている理由 コメント

ただし、次のようなものをpackage.jsonに追加することにより、 semver パッケージとnpmスクリプトを使用して同じことを実現できます。

"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)"
}

npm run beta-version-patchを実行します

より一般的にするために、以下を使用できます。

"scripts": {
  "semver": "npm version $(semver $npm_package_version -i $release --preid $preid)"
}

次のようなコマンドを実行します。

release=prerelease preid=alpha npm run semver
release=prerelease preid=beta npm run semver
release=premajor preid=alpha npm run semver
1
Anand S