機能リクエストは問題に関連していますか?
特定のバージョンがすでにデプロイされているためにデプロイメントが失敗するという問題がいくつかありました。 これは、自動解放が発生するはずの通常のプロセスではありません...しかし、実際に発生します。 昨夜バグがあり、誰かがpackage.jsonバージョンをバンプせずに手動でnpmにデプロイすることにしました。 そのため、すべてが悪い状態になり、手動でバージョンをバンプするまで解決されませんでした。
希望するソリューションを説明してください
package.jsonのversion
フィールドを引き続き更新しますが、信頼できる情報源としてnpmのバージョンを使用します。 不一致がある場合は警告を出しますが、package.jsonのバージョンではなく、npmのバージョンに基づいてバージョンを更新します。
ああ、私はそれが好きです。 ただし、これはモノリポジトリでは扱いにくい場合があります
lernaに対して--force-publish=*
を実行するので、すべてのパッケージにリンクされたバージョンが必要なので、問題になることはありません。
将来、そのフラグを削除した場合、次のことを行う必要があります... idk
また、semver文字列のみを受け取るnpm version
を実行するだけです。 現在、実際にはどこにもパッケージ番号を設定していません。 自分で設定するのは難しいことではありませんが、monoreposは単純ではないようです。
ほとんどのコマンドはタグでも機能するため、リリースにタグが付けられていないと、問題が発生する可能性があります。
「「独立した」バージョン管理モードは間違いだとますます確信しています。それは、ランダムなパッケージを1つのリポジトリにスローし、同時にバージョン管理する必要があるときに文句を言うだけです。」 〜lernaメンテナから。
したがって、 --force-publish=*
は問題ないようです。
--force-publish
と独立したバージョン管理は同じものではありません。
デフォルトでは、lernaはパッケージに変更が加えられた場合にのみ更新を公開します。 --force-publish=*
を使用すると、前回の公開以降に変更がない場合でも、lernaにすべてのパッケージのバージョンを公開するように強制します。
つまり、パッケージA
は変更がありますが、 B
は変更がありません。 lernaはA
新しいバージョンのみを公開します( B
は現在のバージョンのままになります)。 次のリリースA
とB
は変更があり、どちらも同じ新しいバージョンで公開されます。
私が考えていたもの(そしてこれが私たちがサポートするものであるかどうかはわかりません)は、 master
(またはメインブランチ)ではないリリースの可能性です。 この時点まで、リリースには1つのパスがあると常に想定しており、それらは常に線形です(npmまたはgithubのlatest
バージョンを使用)。
以前のリリースにパッチを適用する必要がある場合はどうなりますか? (1.xにはバグがあり、 master
は2.xにありますが、1.xw /修正もパッチしたいです) lerna
またはpkg
から外れる場合
gitツリー以外のものを使用するようにこれを変更した場合、npm(または最新バージョンを取得する場所)にはlatest
1つしかないため、その動作をサポートできないと思います。
それは良い機能のようです。 実装には多少の作業が必要になる場合があります。
バージョン:
version
を計算します-これはパッケージバージョンに簡単に切り替えることができますか?リリース/変更ログ
getCurrentVersion
は、gt(lastRelease、lastVersion)の場合、lastReleaseを返します-したがって、これもそれを認識する必要がありますこれは、すでにgitツリー以外のものを使用していることを意味しますよね?
gitタグが関連付けられていることを確認するためにlatestReleaseに依存する必要があるため、最新のnpmバージョンにタグがあるかどうかを確認できないため(この問題で説明されているように)、切り替えはオプションではありません。 。
おそらく、最後のgitタグからバージョンを変更する新しいフラグが必要になると思います。 --from-git
これで、releaseコマンドはおそらく機能します。 変更ログがどのように見えるかを整理する必要があります。
--from-git
フラグは、NPMの検索をオーバーライドすることもできます。 #173をマージできるということだと思います
最も参考になるコメント
gitタグが関連付けられていることを確認するためにlatestReleaseに依存する必要があるため、最新のnpmバージョンにタグがあるかどうかを確認できないため(この問題で説明されているように)、切り替えはオプションではありません。 。
おそらく、最後のgitタグからバージョンを変更する新しいフラグが必要になると思います。
--from-git
これで、releaseコマンドはおそらく機能します。 変更ログがどのように見えるかを整理する必要があります。
--from-git
フラグは、NPMの検索をオーバーライドすることもできます。 #173をマージできるということだと思います