バグを説明する
Lernaモノレポでauto canary
を実行すると、複数の問題が発生します。
バージョンは9.0.0-beta.33
から9.0.1-canary.809.1.1a2be58f.0
にバンプされていますが、代わりに9.0.0-canary...
である必要があります。
最初はError: Running command 'npx' failed
と書いてあります
You cannot publish over the previously published versions: 9.0.0-beta.33
と言って、npmへの公開に失敗します
私が公開しようとしているPRは次のとおりです: https :
再現するには
私はまだ最小限の再現を持っていません。 必要に応じてLMK。
予想される行動
すべてのパッケージがバージョンとして9.0.0-canary.809.1.1a2be58f.0
で公開されることを期待していました。
デスクトップ(次の情報を入力してください):
追加のコンテキスト
GH_TOKEN="xxx" auto canary --build 1 --pr 809
Error: Running command 'npx' failed
Changes:
- @react-spring/addons: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/animated: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/core: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- react-spring: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/shared: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/konva: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/native: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/three: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/web: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
- @react-spring/zdog: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
lerna notice cli v3.15.0
lerna info current version 9.0.0-beta.34
lerna WARN force-publish all packages
lerna info Assuming all packages changed
lerna WARN version Skipping working tree validation, proceed at your own risk
lerna info auto-confirmed
lerna info execute Skipping git tag/commit
lerna info execute Skipping git push
lerna info execute Skipping releases
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna http fetch PUT 403 https://registry.npmjs.org/@react-spring%2fshared 1475ms
lerna ERR! E403 You cannot publish over the previously published versions: 9.0.0-beta.33.
at ChildProcess.<anonymous> (~/.nvm/versions/node/v11.10.1/pnpm-global/3/node_modules/.pnpm/registry.npmjs.org/@auto-it/core/7.6.1/node_modules/@auto-it/core/dist/utils/exec-promise.js:98:36)
at ChildProcess.emit (events.js:197:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
また、各パッケージのpackage.json
のpublishConfig.directory
フィールドは尊重されていません。
これ見てみます!
- バージョンは9.0.0-beta.33から9.0.1-canary.809.1.1a2be58f.0にバンプされていますが、代わりに9.0.0-canary ...である必要があります。
そこにある余分なハッシュを取り除くために#609を開きました。 バージョンの.0
部分は、 --preid
フラグがあるためです。 残りのバージョンではこれが必要なので、実際になくなることはありません。
@hipstersmoothieああ、私はそれについて不平を言っていませんでした。 ハッシュを入力するのに時間をかけたくありませんでした。 😆その文は、実際には、まだ9.0.0
であるはずなのに9.0.1
方法を示しています。
ああ、分かった。 その場合、それは予想される動作です。 カナリアバージョンは、シミュレートされた「次の」バージョンです。 例えば:
PRにはmajor
ラベルがあります=>これらの変更が加えられたカナリアには、これらの主要な変更が含まれており、新しいメジャーバージョンである必要があります
9.0.1
になった理由は、ラベルが見つからない場合、デフォルトでpatch
になるためです。
ああ、わかりました。 latest
タグは現在8.0.27
指しているので、とにかくauto canary
が9.0.1
を使用するとは思わないでしょう。 9.0.0-beta.33
の存在によって混乱していたに違いありません。 バージョンを9.0.0
ままにする方法はありますか?
彼らはそれが今のように振る舞う方法です、それは「最新リリース」を見て、あなたはローカルバージョンを見て、より高いものを使用します。 したがって、この場合、それは9.0.0-beta.33
解決されました。
バージョンを9.0.0のままにする方法はありますか?
ローカルで、 preminor
の代わりにprerelease
使用してlernaを実行すると、バージョンが増加しません。 カナリアコマンドにprerelease
を取得するには、フラグを追加するか、 prerelease
ラベルを使用できますが、この機能は自動ではありません。
以前に公開されたバージョンを超えて公開することはできないと言って、npmへの公開に失敗します:9.0.0-beta.33
これは、 package.json
がdist
フォルダーに入る際の問題のようです。 prepare
ステップは、autoが実行する前に実行されるため、バージョンは最初に存在していたものになります。 この場合、「9.0.0-beta.33」
lernaを実行すると、この古いバージョンのpackage.json
が取得されます。これには、すでに公開されているバージョンが含まれており、再度公開を試みます。
ローカルで、
prerelease
代わりにpreminor
prerelease
使用してlernaを実行すると、バージョンが増加しません。 canaryコマンドにprerelease
を取得するには、フラグを追加するか、prerelease
ラベルを使用できますが、この機能は自動ではありません。
それで十分なはずです。 「 beta
/ next
バージョンを構築するブランチからローカルでauto canary
を実行する」ことは、エッジケースだと思いますか? そうでない場合は、ここで自動サポートが必要になる可能性があります。 また、CIからauto canary
を実行した場合でも、このエッジケースに遭遇しますか?
lernaを実行すると、この古いバージョンの
package.json
が取得されます。これには、すでに公開されているバージョンが含まれており、再度公開を試みます。
LernaはpublishConfig.directory
(ここを参照)をサポートしていますが、Lernaとの統合により、何らかの形でそのコードパスが回避されている可能性があります。
問題なのはこの線です。
package.json、readmeなどをdistフォルダーにコピーして公開するだけなので、非常に特定の時間にprepare
スクリプトを実行する必要があります。
lerna version
-package.jsonをカナリアバージョンに変更しますprepare
-最終パッケージをdistフォルダーに配置lerna publish
-正しいバージョンのパッケージdistフォルダーを公開しますだから、このワークフローのためにあなたは、ライフサイクルのスクリプトを実行してみましょう必要がありますignoreScripts
(まったくかだけではない)をfalseに設定する必要があります。
「ベータ版/次のバージョンを構築するブランチからローカルで自動カナリアを実行する」ことは、エッジケースだと思いますか? そうでない場合は、ここで自動サポートが必要になる可能性があります。
ベータ版/次のサポートは実際にはまだ組み込まれていませんが、それに取り組むときにこの問題に戻ります。
@aleclarson ignoreScripts
削除した後、カナリアを公開することができました。 私はこの問題のすべてに対処したと思います、もし私が閉じてください!
大丈夫甘い! 現在、回避策が用意されているため、すぐに確認することはありません。
これをもう一度試してみたら、必ず再開します。 ;)