非常に便利な npm version
コマンドがあります。 major
、minor
、patch
などの引数に加えて、prerelease
、prepatch
などの引数を受け入れます。
ドキュメントには、コマンドが 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
にバンプすることを望みますが、それは機能しません。
npm 6.4.以降、--preid
のnpm 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
私は最近これを見て、問題の更新があるかどうかを確認しています...しかし、状況は同じようです。
いいえ、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がホストするモジュールでのみ機能すると思います。
言及されている他の回答と同様に、これは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