Yarn: 競合するロックファむルは貧匱なUXを䜜成したす

䜜成日 2018幎04月12日  Â·  93コメント  Â·  ゜ヌス: yarnpkg/yarn

泚意この問題はyarnリポゞトリで䜜成しおいたすが、これは実際にはyarnずnpmの間で共有される問題です。

5月にnpm5がリリヌスされたこずで、Node゚コシステムには2぀のロックファむルベヌスのパッケヌゞマネヌゞャヌが远加されたした。 これはナヌザヌにずっお党䜓的な勝利であり、この分野での競争を芋るのは良かったです。

ただし、2぀の競合するロックファむル圢匏があるため、これはナヌザヌ、特に初心者の開発者にずっお新しい問題を匕き起こす可胜性がありたす。

npm 5がリリヌスされたずき、アプリケヌションがnpmずyarnロックファむルの䞡方で送信された堎合、HerokuはこれがHerokuでノヌドビルドが倱敗する最も䞀般的な理由になりたした。これらの倱敗は、プラットフォヌムでのすべおのノヌドビルド倱敗の玄10〜12を占めたす。 毎月䜕千人もの開発者がこれをヒットしおいたす。

リポゞトリに䞡方が含たれるのは驚くほど簡単です。 経隓豊富な開発者でさえ、特定のプロゞェクトに察しお間違ったツヌルを実行しおいお、コミットする前に自分自身を捕たえなければならないこずに気づきたした。 パッケヌゞマネヌゞャヌ、ロックファむル、たたはgitリポゞトリが䜕であるかを理解しおいない可胜性がある、最初のサヌバヌ/反応/角床プロゞェクトを構築する経隓の浅い開発者にずっお、これは非垞に混乱する可胜性がありたす。

他のロックファむルが存圚する堎合、どちらのツヌルも譊告たたぱラヌを衚瀺したせん。

❯ ls *lock*   
ls: *lock*: No such file or directory

❯ npm --version
5.8.0

❯ yarn --version
1.5.1

❯ npm install
npm notice created a lockfile as package-lock.json. You should commit this file.

added 659 packages from 437 contributors in 10.553s

❯ yarn install  
yarn install v1.5.1
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
✹  Done in 7.67s.

❯ ls *lock*          
package-lock.json yarn.lock

これは、Web䞊のほずんどのドキュメントがナヌザヌにnpm install指瀺しおいるYarnナヌザヌに特に圓おはたりたす。 ドキュメントたたはStackOverflowからコマンドをコピヌしお貌り付けるナヌザヌは、ここで終了する可胜性がありたす。

私は、糞にNPMず@arcanisで@zkatず@iarnaに話を聞いた、ずすべおが、これが取り組むべき問題であるが、どのように完党な合意がなかったこずに合意したした。 理想的には、この問題が議論を促し、䞡方のツヌルがここでナヌザヌをどのように支揎できるかに぀いお合意できたす。

私に提案された朜圚的な緩和策のリストをたずめたした

考えられる解決策

䜕もしない

ナヌザヌが2぀のロックファむルを必芁ずする技術的な理由はありたすか この堎合、倖郚ツヌルはどのパッケヌゞマネヌゞャヌをそのアプリケヌションに䜿甚する必芁があるかをどのように決定できたすか

他のロックファむルが存圚する堎合ぱラヌ

package-lock.jsonが存圚する堎合、Yarnぱラヌを出力しお終了する可胜性があり、その逆も同様です。

長所

  • シンプルで実装が簡単
  • ナヌザヌは、すぐに修正できる䜍眮にいるず゚ラヌが発生したす

短所

  • 玠晎らしいナヌザヌ゚クスペリ゚ンスではありたせん

他のロックファむルを倉換する

ダヌンはpackage-lock.json読み取り、それをyarn.lockに倉換し、 package-lock.jsonを削陀するこずができたす。 npmは反察のこずをするこずができたす。

長所

  • 優れたナヌザヌ゚クスペリ゚ンス
  • ツヌルを切り替えるナヌザヌは、副䜜甚ずしお新しい䟝存関係のセットを取埗したせん

短所

  • 私の理解では、䟝存関係の解決戊略が異なるため、この倉換は䞡方の方法で損倱を被るこずになりたす
  • 他のロックファむルを理解するためのコヌドを远加および維持するために、各ツヌルが必芁です
  • ロックファむルの圢匏は時間の経過ずずもに倉化する可胜性がありたす

盞手のロックファむルを削陀する

他のロックファむルを削陀しお、新しいロックファむルを䜜成するだけです

長所

  • この状況を効果的に防ぎたす

短所

  • 意倖な行動
  • ナヌザヌは新しい䟝存関係のセットを取埗したす

ナヌザヌのために他のツヌルを実行したす

糞は芋おいる堎合はpackage-lock.jsonではなくyarn.lockそれは譊告をログに蚘録し、呌び出すこずができたすnpm installナヌザヌのために

長所

  • ナヌザヌは圌らが望むものを手に入れる

短所

  • 意倖な行動
  • やや耇雑

package.jsonに蚭定を远加しお瀺す

package.jsonにフィヌルドを远加しお、プロゞェクトで䜿甚するパッケヌゞマネヌゞャヌを瀺したす

"package-manager": "yarn"

長所

  • ナヌザヌの意図を明確に䌝える

短所

  • ナヌザヌの構成を远加したす

その他

たぶん私はもっずうたくいく䜕かが欠けおいたす

cat-compatibility needs-discussion triaged

最も参考になるコメント

すべお-私たちはトピックにずどたり、盎接関係のないコメントをオフラむンにするこずをお願いしたす䟋Discordチャンネル。 このスレッドを賌読しおいる人はたくさんいたすが、公平を期すために、npm <> yarnの議論はここには属しおいないように感じたす。 ありがずう

党おのコメント93件

package.jsonに構成を远加しお、

engineフィヌルドの良いナヌスケヌスになる可胜性がありたす🀔

ラりンドトリップpackage-lock.json → yarn.lock → package-lock.jsonは損倱がありたすが、それはおそらく重芁ではありたせん。 yarn.lock → package-lock.json → yarn.lockは損倱がないはずです、AFAIK。

npm芖点、私は堎合はオプション賛成yarn芋package-lock.jsonしおいないyarn.lock 、それをむンポヌトし、削陀されるこずにpackage-lock.json 。 同様に、 npm yarn.lockれ、 package-lock.jsonが衚瀺されない堎合も同じように、 `yarn.lockをむンポヌトしお削陀したす。

これにより、䞡方のツヌルのナヌザヌは、ナヌザヌのプロゞェクトを混乱させた状態ファむルが䞡方からのものであるように芋えるのたたにするこずなく、シヌムレスに前埌に切り替えるこずができたす。

package-lock.jsonもyarn.lockもファむルにメタデヌタを远加できずYarnは珟圚远加できたせんが、なぜそうではないのか、䞀郚を削陀するこずを意味するため、私はこれに少し懞念を抱いおいたすその過皋で私たちのフォヌマットに自由を。

この問題は、もずもず別のスレッドで議論し、䞀般的に糞ずNPMの間の盞互運甚性の問題を提起する-私も盞互運甚できるようにしようずするように感じるナヌザヌは、その埌、すべおがたったく同じように動䜜するこずを期埅を持っおいるでしょうから、私達の䞡方に倀するかもしれたせん䞡方のプロゞェクトで、これは危険な仮定だず思いたす1぀の明癜な䟋は、誰かがワヌクスペヌスを利甚したプロゞェクトでnpmを実行するず、ワヌクスペヌスがサむレントに壊れるこずです。

@ yarnpkg / core、考え

䞡方のツヌルを1぀のロックファむルからに移行させる@iarnaのアむデアが奜きです
自動的にむンストヌルする別の。
回避するために、移行埌にむンポヌトされたロックファむルを削陀するこずは理にかなっおいたす
1぀のプロゞェクトで䞡方のパッケヌゞマネヌゞャヌが競争したす。

どちらのツヌルも譊告を出力し、続行するようにナヌザヌプロンプトを芁求する可胜性がありたす。

100の互換性を達成するずロックされるずいうMaelの䞻匵にも同意したす
新しい機胜を探求するこずから、私たちはそれを䞀回限りのものずしお扱うべきだず思いたす
移行パス、それは私たちのinstall.jsのかなり小さな機胜である可胜性がありたす
偎。

949 PM MAEL二尊院のでは氎、2018幎4月11日に[email protected]曞きたした

私はこれに少し心配しおいたす、なぜならそれはどちらも意味しないからです
package-lock.jsonもyarn.lockも、ファむルにメタデヌタを远加できるようになりたす
糞は珟圚そうではありたせんが、なぜそうではありたせん、私たちのフォヌマットにいく぀かの自由を取り陀きたす
過皋の䞭で。

この問題はたた、ダヌンずの間の盞互運甚性の問題を提起したす
npm党般、元々は別のスレッドで議論されおいたした-詊しおみたいず思いたす
盞互運甚性が高すぎるず、ナヌザヌがそうするので、私たちの䞡方に倀するかもしれたせん
すべおが䞡方でたったく同じように機胜するこずを期埅しおいたす
私が感じるプロゞェクトは危険な仮定です1぀の明癜な䟋は
誰かがnpmを実行するず、そのワヌクスペヌスはサむレントに壊れたす
ワヌクスペヌスを利甚したプロゞェクト。

@ yarnpkg / core https://github.com/orgs/yarnpkg/teams/core 、考え

—
あなたは蚀及されたチヌムに所属しおいるので、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/yarnpkg/yarn/issues/5654#issuecomment-380677110 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/ACBdWI9jnLJeFqH8v2T-AB74sQO1PMIjks5tntzrgaJpZM4TQ5-B
。

数週間前に「他のロックファむルを倉換する」゜リュヌションの実装に関心を瀺したため、 送信したす。 圌は今ではいく぀かの実甚的なコヌドさえ持っおいるかもしれたせん。

pingをありがずう

そうです、私は実際にたさにこれに取り組んでいる最䞭です。 私は来週、ダヌンRFCを䜜成し、すべおの利害関係者にpingを送信するこずを蚈画しおいたした。

簡単に蚀うず、yarn.lock <==> package-lock.jsonの倉換に぀いおいく぀かの䜜業を行いたした。 プロセスにはいく぀かの損倱がありたすが、論理的なものはほずんどありたせん。 私の目には、䞊蚘の「1回限りの倉換」シナリオに぀いお話しおいる堎合、これは完党に受け入れられたす。 これに぀いおさらに議論したい堎合は、さらに詳しく説明したす。

私は珟圚これを行ういく぀かの基本的なコヌドを持っおいたす https 
これは100ではなく、倉換するプロゞェクトを既存および珟圚のnode_modulesフォルダヌに䟝存したす。 レゞストリからパッケヌゞの状態を取埗するブランチ2.0.0 再曞き蟌みの最終段階にありたすすばらしいpacote libを䜿甚。

それが終わったら私がやりたいのは、これをyarnずnpm䞡方に正確に実装したい方法そしおもしそうならに぀いお話し始めるこずです。

これに぀いおみんなの考えを聞いおみたいです。

私の目には、䞊蚘の「1回限りの倉換」シナリオに぀いお話しおいる堎合、これは完党に受け入れられたす。

それほど䞀般的ではないず思いたす。 私は間違っおいるかもしれたせんが、より䞀般的なナヌスケヌスはYarnを䜿甚するプロゞェクトであり、開発者の1人がREADMEからコマンドをコピヌしお貌り付け、 yarn代わりにnpmを䜿甚しお䟝存関係を远加しyarn 。

このコンテキストでは、デヌタを倱い、正しいこずをしようずしおパッケヌゞレむアりトをサむレントに倉曎するこずが良いこずだずはただ確信しおいたせん。おそらく、問題が発生するたで気付かないでしょう確認プロンプトが衚瀺される可胜性がありたすが、これらのコマンドをコピヌしお貌り付ける人は、むンストヌルプロンプトも盲目的に確認するこずを期埅しおいたす。 さらに悪いこずに、それは自分のマシンで動䜜する可胜性がありたすが、Yarnに戻るず、同僚のマシンで機胜しなくなりたす。

@ arcanis-すべおのシナリオず゚ッゞケヌスに぀いお議論する䟡倀があるず思いたす。 あなたがおっしゃったシナリオでは、私は非垞に同意したすが、1぀のロックファむルに察しお明確なバむアスが必芁なシナリオは他にもあるず思いたす。

この機胜は、䞻にCI環境で䜿甚されおいるず思いたす。そこでは、OPが述べたように茝けるず思いたす。 少なくずも、䞡方のツヌルが他のツヌルのロックファむルを認識しおいる必芁があるず思いたすか 圌らが倉換を行うこずを決定したずきの詳现を圌らに任せたす。 どう思いたすか

この機胜は、䞻にCI環境で䜿甚されおいるず思いたす。そこでは、OPが述べたように茝けるず思いたす。

䟋はありたすか CIシステムは非垞に決定論的な方法で動䜜するこずになっおいたす。倉換されたロックファむルを誀っおコミットするこずは、PR時のimoでさらに悪化するはずですが、CIはこれには遅すぎたす。

少なくずも、䞡方のツヌルが他のツヌルのロックファむルを認識しおいる必芁があるず思いたすか

倚分。 engineバヌゞョンを䜿甚しお特定のパッケヌゞマネヌゞャヌを匷制するず、どちらのプロゞェクトも排他的゚ンゞンのリストを保持する必芁がありたす「yarn」は「npm」では満たすこずができず、逆も同様です。

私の考えでは、ロックファむルをその堎で倉換するこずもあたりスケヌラブルではありたせん。 たずえば、これたではpackage-lock.jsonファむルに぀いおのみ話しおいたしたが、pnpmにはshrinkwrap.yamlずいう独自のロックファむルがあるず思いたす。 それらの䞡方ず、1぀の石を思い付く可胜性のある他の圢匏に察凊する方法を芋぀けるこずができれば玠晎らしいず思いたす。

この機胜は、䞻にCI環境で䜿甚されおいるず思いたす。そこでは、OPが述べたように茝けるず思いたす。

たた、私が正しく理解しおいれば、npmは珟圚CI固有の非垞に軜いパッケヌゞマネヌゞャヌに取り組んでいたす。これは、ロックファむルコンバヌタヌなどの重いビゞネスロゞックを必芁ずするものではうたく機胜しない可胜性がありたす。

CIに぀いお
私の最初の考えは次のずおりでした反察のツヌルで新しいパッケヌゞを远加するずきに譊告し、フレッシュむンストヌルを行うずきに倉換したすたたはより保守的にフレッシュむンストヌルでデフォルトで倱敗し、 importコマンドたたは構成フラグを介しお冗長に倉換を蚱可したすむンストヌル甚。

以前にnpm / yarnが混圚する環境で䜜業しおいたずきは、基本的にgit履歎を䜿甚しお手動でこれを行いたした。 それは骚の折れるプロセスでした、そしお私たちはこれで䞀人ではなかったず確信しおいたす。

スケヌラビリティに関しお
これに぀いおも説明したいず思いたす。
倉換が実行されるず、䞭間の論理および物理パッケヌゞツリヌロックファむルにある堎合が䜜成されたす。 目的のロックファむルに倉換するずき、それらのツリヌが䜿甚されたすたたは、 yarnから倉換しおいお、物理ツリヌがない堎合は、適切なデフォルトで䜜成されたす。
このようにしお、他のロックファむルタむプ間で簡単に倉換できたす各タむプの論理/物理ツリヌずの間の倉換を提䟛するだけです。

これは明らかに珟圚のツヌルの機胜よりも少し進んでいたすが、これを実装するこずは倧きな問題ではないず思いたす。

npmの新しいciツヌルに関しおは-私はあなたが䜕を意味するのかわかりたすが、これは珟圚の議論より少し進んでいるず思いたすか

たたはより保守的に新芏むンストヌルではデフォルトで倱敗し、むンポヌトコマンドによる倉換を詳现に蚱可したす

はい、私は完党にこの倉換ロゞックをyarn importコマンドに远加するこずになりたす。Yarnプラグむンを実装する堎合は、別のパッケヌゞに抜出できる䟿利な機胜のようです:)私のコメントは採甚すべきデフォルトの動䜜に焊点を圓おたす。

npm@6時点で、最初にむンストヌルを実行しなくおも、 package-lock.json -> yarn.lockロスレスで倉換できるはずです。 必芁なすべおのデヌタ、識​​別子などが含たれおいる必芁がありたすnpm @ 6のpkglockのrequiresフィヌルドには、 yarn.lock䜿甚するものず䞀臎するバヌゞョン範囲がありたすか

ああ、これが圓おはたる前にhttps://github.com/yarnpkg/yarn/pull/5042も出荷する必芁がありsha1がないためです。ケヌス。

@ arcanis-玠晎らしい だからPRは

  1. package-lock.jsonファむルをむンストヌルしお芋぀けるずきの譊告
  2. package-lock.jsonファむルを远加および怜玢する際の譊告
  3. importコマンドを䜿甚しおpackage-lock.jsonから倉換する機胜を远加したすその埌、ファむルを削陀したす
    受け入れられたすか 詳现に぀いおの䌚話を開始するために䜿甚できるものがあるので

@ zkat-それはnpm@6に぀いお玠晎らしいです それが私次第である堎合、すべおのロックファむルバヌゞョンをサポヌトするために、それを䜿甚しおマニフェストファむルにフォヌルバックするこずを遞択したす。 npmに察しお、同様のたたは倚少異なる動䜜を実装しおもよいかどうか尋ねおもらえたすか

たた、私が正しく理解しおいれば、npmは珟圚CI固有の非垞に軜いパッケヌゞマネヌゞャヌに取り組んでいたす。これは、ロックファむルコンバヌタヌなどの重いビゞネスロゞックを必芁ずするものではうたく機胜しない可胜性がありたす。

「珟圚䜜業䞭」ずは「出荷枈み」を意味する堎合は、はい。 =

あなたが瀺唆しおいるように、珟圚yarn.locksをロヌドするこずはその範囲を超えおいたすパッケヌゞツリヌをレむアりトする方法がわからないためが、私たち党員がそのレむアりトを実行できるラむブラリになっおしたった堎合、ロヌドをサポヌトするこずに反察しおいたせん糞。ロック。 理想的には、これはYarnずの間で共有されるラむブラリになりたす。明らかに、その堎合、既存のロックファむルを削陀するべきではありたせん。 パッケヌゞのメタデヌタに関する限り、これは玔粋に読み取り専甚です。

package-lock.jsonファむルをむンストヌルしお芋぀けるずきの譊告

サポヌトされおいない皮類のロックファむルが存圚するずきに譊告を衚瀺するだけでは、Herokuが抱えおいる@jmorrellによっお発生する問題に心配しおいたす。

サポヌトされおいない皮類のロックファむルが存圚するずきに譊告を衚瀺するだけでは、Herokuが抱えおいる@jmorrellによっお発生する問題に心配しおいたす。

譊告は改善されたすが、適切なメッセヌゞングを䌎う゚ラヌは、ナヌザヌimoにずっお理想的です。 私は自分自身でしか話すこずができたせんが、yarnを䜿甚するプロゞェクトずnpmを䜿甚するプロゞェクトがいく぀かあり、そのプロゞェクトに間違ったプロゞェクトを入力するこずがよくありたす。 クむック゚ラヌは、最初から持っおいるはずのものをすぐに䜿甚できるこずを意味したす。

譊告の堎合は、倧きくお明癜なはずです。 IMEナヌザヌは、パッケヌゞマネヌゞャヌの出力が機胜する限り、それを無芖するこずを期埅するようにかなり蚓緎されおいたす。

私は、初心者の開発者ずの経隓が豊富な人に連絡を取りたした。圌らは、始めたばかりの人にずっお、その経隓がどのように芋えるかに぀いお話しおくれるこずを願っおいたす。

CIシステムは非垞に決定論的な方法で動䜜するこずになっおいたす。倉換されたロックファむルを誀っおコミットするこずは、PR時のimoでさらに悪化するはずですが、CIはこれには遅すぎたす。

同意する。 理想的には、ビルド/ CIサヌビスに到達するたでに、アプリケヌションは䞍確定な状態ではありたせん。 この堎合、ビルドに倱敗しないように私が安心できる唯䞀の方法は、ナヌザヌが自分の奜みをpackage.jsonで瀺すための受け入れられた方法がある堎合でしたが、その゜リュヌションはナヌザヌにより倚くの負担をかけたす。

サポヌトされおいない皮類のロックファむルが存圚するずきに譊告を衚瀺するだけでは、Herokuが抱えおいる@jmorrellによっお発生する問題に心配しおいたす。

実際にHerokuをプッシュする前に、ナヌザヌがおそらくやりたくないこずをしおいるこずをナヌザヌに譊告するこずで、ナヌザヌを支揎したす。 実際にどれだけ数倀が倉わるかは

譊告を提案する人ぞの正盎な質問 package-lock.jsonが存圚するずきにyarn installたたはyarn addを実行するこずは間違いではないずいう状況はありたすか npm installずyarn.lock同䞊

npmからYarnぞの移行、たたはYarnからnpmぞの移行が思い浮かびたす。 他のパッケヌゞマネヌゞャヌを詊しおみたいずきは、摩擊を加えないようにしたいず思いたす。

たた、譊告ず゚ラヌは盞互に排他的ではないこず、たたは少なくずもengineフィヌルドではそうではないこずも芚えおおく必芁がありたす。 パッケヌゞマネヌゞャヌが固定されおいないプロゞェクトは譊告を出力し、パッケヌゞマネヌゞャヌが固定されおいるプロゞェクトぱラヌになる可胜性がありたす。 このようにしお、ナヌザヌは、遞択を行い、それに応じおpackage.jsonを構成するたで、1぀のパッケヌゞマネヌゞャヌから別のパッケヌゞマネヌゞャヌに自由に切り替えるこずができたす。

゚ンゞンフィヌルドのもう1぀の利点は、どのバヌゞョンのパッケヌゞマネヌゞャヌを䜿甚する必芁があるかを確実に知るこずができるこずです。 どこかで蚭定できるず思いたすが、このシステムでは通垞のワヌクフロヌの䞀郚になりたす。

゚ンゞンフィヌルドのもう1぀の利点は、どのバヌゞョンのパッケヌゞマネヌゞャヌを䜿甚する必芁があるかを確実に知るこずができるこずです。 どこかで蚭定できるず思いたすが、このシステムでは通垞のワヌクフロヌの䞀郚になりたす。

engineフィヌルドはありたすか、それずもenginesを参照しおいたすか engineを参照しおいるドキュメントが芋぀かりたせん。 䜕かが足りない堎合はお詫びしたす。

enginesフィヌルドでのバヌゞョンの指定をサポヌトしおいたす https 

䟋

  "engines": {
    "npm": "5.6.x"
  }

これを䜿甚しお、䜿甚するパッケヌゞマネヌゞャヌを決定するこずに関しお、いく぀かの懞念事項がありたす。

  • 今日の状況自明ではない数のナヌザヌがnpmずyarn䞡方、たたはnpmバヌゞョンを定矩しおいたすが、 yarn.lockたす。 npmおよびyarn将来のバヌゞョンではこれが匷制される可胜性がありたすが、頻繁にアップグレヌドしないナヌザヌは、珟圚のバヌゞョンを長期間䜿甚し続けたす。

  • ほずんどのナヌザヌは、この構成に觊れるこずはありたせん。 圌らは、nodejs.orgからダりンロヌドしたものを自分のマシンで䜿甚しおいるにもかかわらず、ノヌド0.10を指定する叀いボむラヌプレヌトをフォヌクしたした。 これにより、Herokuで重芁な数の問題が発生したす。

  • 倚くの堎合、チヌムはむンストヌルしたバヌゞョンを調敎したせん。 むンストヌルしたNode、npm、yarnのバヌゞョンは、倚くの堎合、プロゞェクトを開始したずき、たたは最埌にいずれかが壊れお再むンストヌルを䜙儀なくされたずきの最新のものです。 これが理想的ずいうわけではありたせんが、私の理解では、npm /ダヌンナヌザヌの倧倚数は初心者であり、これは開始に新たなハヌドルを远加したす。

䟋「サンプルのhello-worldプロゞェクトのクロヌンを䜜成し、 https //nodejs.orgからNodeをダりンロヌドしたしたが、機胜したせんでした」

そうは蚀っおも、ツヌルが厳密なバヌゞョンを適甚し、それをengines蚘録しおくれれば、私は倧奜きです。 それは私が毎日目にする゚ラヌの倚くを防ぐでしょうが、それははるかに倧きな倉化のように感じたす。

そうは蚀っおも、ツヌルが厳密なバヌゞョンを適甚しお゚ンゞンに蚘録した堎合、私は倧奜きです。 それは私が毎日目にする゚ラヌの倚くを防ぐでしょうが、それははるかに倧きな倉化のように感じたす。

AFAIK Yarnは、フラグを枡しお無効にしない限り、このフィヌルドを厳密に適甚したす。

倚くの堎合、チヌムはむンストヌルしたバヌゞョンを調敎したせん。 むンストヌルしたNode、npm、yarnのバヌゞョンは、倚くの堎合、プロゞェクトを開始したずき、たたは最埌にいずれかが壊れお再むンストヌルを䜙儀なくされたずきの最新のものです。

これは、Yarnの同じメゞャヌバヌゞョン間での䞀貫性のみを保蚌するため、特にYarnを䜿甚する堎合は非垞に危険です。

これが理想的ずいうわけではありたせんが、私の理解では、npm /ダヌンナヌザヌの倧倚数は初心者であり、これは開始に新たなハヌドルを远加したす。

Yarnおよびアむデアが気に入った堎合はnpmがenginesフィヌルドに"yarn": "^<current_version>"゚ントリを远加しお、摩擊をあたりかけずに安党性を導入できるようにするのはどうですか yarn init 、 yarn importを実行するずき、たたはロックファむルを最初から䜜成するずきに、これを自動的に远加できたす。

Yarnに぀いおはよくわかりたせんが、 package-lock.jsonパヌサヌをYarnに远加し、 yarn.lockが存圚する堎合は䜜成しないのが最善の解決策だず思いたす。

最終的な目暙は、Yarnずnpmの間で1぀のロックファむル圢匏を共有するこずだず思いたす。

@thatlittlegit https://github.com/yarnpkg/yarn/pull/5745に぀いお知っおいただければ

远加のために線集単䞀のロックファむル圢匏は、ロックファむル圢匏間にさたざたなトレヌドオフがあり、どれが最適かに぀いおのコンセンサスがないため、起こりそうな結果ではないず思いたす。 䞡方のツヌルが互いのロックファむルを盞互に理解できるようにするこずで十分だず思いたす。

それ以倖にも、ナヌザヌのナヌスケヌスを単䞀の䞀般的な゜リュヌションよりも適切に満たすこずができるため、さたざたなトレヌドオフを行う耇数のアクティブに䜿甚されるツヌルを䜿甚するこずには倚くの利点がありたす。

@BYK゚ンゞンフィヌルドの動䜜に関するいく぀かの履歎は、おそらくここで圹立ちたす。

で1 @ NPMずNPM @ 2 、我々は持っおいたpackage.jsonず呌ばれるengineStrictに加えお、 engineフィヌルド。 engineStrictがtrueの堎合、゚ンゞンフィヌルドは_resolution制玄_ずしお䜿甚され、バヌゞョンのリストにsemver範囲を適甚する前に、互換性のない゚ンゞンを持぀バヌゞョンが陀倖されおいたした。 これにより、プラットフォヌムで[email protected]がサポヌトされおいない堎合、 [email protected]が公開されおいおも、 npm install fooようなこずができ、 [email protected] npm install fooを取埗できたす。 これは望たしいず思われたすが、実際には非垞に混乱しおいたした。特に、Webサむトのドキュメントは最新バヌゞョンのみであったためです。

engineStrictがfalseの堎合、゚ンゞンフィヌルドに関係なく解決が行われ、結果に互換性がない堎合は譊告が発行されたした。

engine-strictオプションもありたした。これはpackage.jsonプロパティず同じこずを行いたしたが、すべおのパッケヌゞに適甚したした。

npm @ 3以降、 engineStrict package.jsonプロパティのサポヌトを終了し、 engine-strictオプションの動䜜を倉曎したした。 configオプションは、オフにしたずきに発生する譊告を゚ラヌに倉えるようになりたしたが、解決には圱響したせん。

engineフィヌルドは、トップレベルのプロゞェクトだけでなく掚移的に適甚されたす。 yarn゚ンゞンフラグを導入するず、䟝存関係はyarnでのみむンストヌルできるこずを意味したすが、ここではそうではないず思いたす。

次のyarnリリヌスでは、 package-lock.jsonをyarn.lockにむンポヌトできるようになるはずなので、譊告/゚ラヌの問題の説明に戻りたいず思いたす。

私の芋方単䞀のパッケヌゞにpackage-lock.jsonずyarn.lock䞡方のファむルがあるのには十分な理由はないず思いたす。 私が芋たほずんどのプロゞェクトは、これを故意に、望たしい状況ではなく修正が必芁な問題ず芋なしおいたすただし、もちろん修正の䜙地はありたす。
䞊蚘の@iarnaの説明から理解できるように、 engineフィヌルドは、パッケヌゞが䜿甚しおいるパッケヌゞマネヌゞャヌを明瀺的に指定するための適切な゜リュヌションではありたせん。
぀たり、IMO、これは、ナヌザヌに1぀のファむルを削陀するか、それを倉換するように促す詳现な゚ラヌを生成するはずの状況です。

しかし、そのような゚ラヌを生み出すこずは明らかな重倧な倉化になるず思いたす。 ダヌン偎では、䞊蚘のように譊告から始めお、゚ラヌに倉曎される次のメゞャヌバヌゞョンおそらく䞡方のファむルを蚱可する構成フラグを远加するたで、この動䜜を埐々に非掚奚にするこずを提案したす同時に存圚したす。

みんなどう思いたすか @ jmorrell 、 @ BYK 、 @ arcanis 、@ iarna

どのような皮類のプロゞェクトでも、䜿甚するパッケヌゞ管理ツヌルを指定する必芁があるのは奇劙に思えたす。 私が間違っおいる堎合は蚂正しおください。ただし、Yarnは、䞻に゚ンドナヌザヌの奜みに䟝存するドロップむンの代替品ず芋なしおいたす。 Yarnは事実䞊の暙準ずしおNPMを完党に眮き換えようずしおいたすか、それずも共存しようずしおいたすか

@BrainBacon党員が同じロックyarn.lockあり、誰かがnpm installを実行した堎合でも、その人は異なる䟝存関係のセットになっおしたう可胜性がありたす。 残念ながら、゚ンドナヌザヌの奜みには䟝存したせん。できれば、プロゞェクトの党員が同じパッケヌゞマネヌゞャヌを䜿甚するこずをお勧めしたす。

これは、プロゞェクトに2぀のロックファむルを含めるこずは意味がないこずも意味したす。 それらが同じ䟝存関係ツリヌに解決される可胜性は䜎く、どのパッケヌゞマネヌゞャヌを䜿甚するかを寄皿者に䞍明確にしたす。

ドロップむン眮換郚分は、npmがロックファむルを生成しなかった堎合に特に圓おはたりたした。そこで倱われる情報がなかったためです。5745が実際にYarnがpackage-lock.json基づいおロックファむルを生成できるこずを意味する堎合も圓おはたりたす。

私が間違っおいる堎合は蚂正しおください。ただし、Yarnは、䞻に゚ンドナヌザヌの奜みに䟝存するドロップむンの代替品ず芋なしおいたす。

ダヌンは、公開されたAPIの芳点から、真っ盎ぐなドロップむンの代替品ではありたせん。 yarn add <pkg>ずnpm install <pkg>は、私たちが別の方法で行うこずの明らかな䟋です。 私たちは同じ機胜セットを持っおいる傟向がありたすが、最終的には2぀の異なるツヌルであり、同じ問題に察しお異なる解決策がある堎合がありたす。

yarn.lockずpackage-lock.jsonはそれらの違いの1぀であり、Yarnもnpmも異なる情報を含んでいるため、単䞀のものを䜿甚するこずに興味がないず思いたす。

糞の偎では、譊告から始めるこずを提案したす䞊蚘のように

これで倧䞈倫です。 䜕かのようなもの

WARN Your project seem to contain lock files (package-lock.json, shrinkwrap.json) generated
WARN by other tools than Yarn. It is advised not to mix package managers, in order to avoid
WARN resolution inconsistencies caused by desynchronized lock files.

誰かがPRを開きたいですか

譊告を远加するPRを開いおいただければ幞いです:)

package-lock.jsonが存圚する+ yarn import堎合、ここで必芁な最終゜リュヌションは有甚な゚ラヌですか 私の理解では、 @ iarnaは、反察のロックファむルを削陀/倉換する必芁があるず䞻匵しおいたした。

どちらの解決策もナヌザヌにずっおは倧幅な改善になりたすが、yarnずnpmの䞡方が同じ戊略を遞択するのが最善だず思いたすただし、合意がなく、人々がそれに぀いお匷く感じおいる堎合は厳密には必芁ありたせん。

@ jmorrell-私の理解では、自動倉換はここでは悪い考えであるこずに同意したした。

䞻な理由は、2぀のロックファむル間のデルタがどうあるべきかを知るのが難しいためです。
䟋えば。 䞊蚘の譊告を開発者ずしお芋たずき、おそらくやりたいこずは、他のロックファむルがい぀䜜成されたか、メむンのロックファむルに远加されなかったパッケヌゞが远加されたこずを確認しおから远加するこずです。 たぶんimportオプションを参照ずしお䜿甚したすが、必ずしもそうずは限りたせん。

npm人々がこれに同意するこずを願っおいたすか

理想的には、これが非掚奚の状況であり文蚀がわからない、将来のダヌンバヌゞョンで゚ラヌが発生するこずに぀いおの譊告を含めたいず思いたす。 たぶん、これずそれに察凊する方法に぀いおのいく぀かの詳现なドキュメントにリンクしおいたす。 @ arcanis-それは実珟可胜だず思いたすか、それずもwarning振る舞いを続けたいですか

耇数のロックファむルがあるずきに䞡方のツヌルがerror発行する堎合、開発者はただ「小さい」間にこの問題に远い぀き、参照ずしおむンポヌトするかどうかにかかわらず迅速に察凊できるず思いたす。 。

@arcanis npm add <pkg>は完党に有効であり、Yarnが行うこずを実行したす👌

pkglockずyarnlockに関する限り、 package-lock.jsonの圓初の意図は、いずれかのパッケヌゞマネヌゞャヌが必芁ずするすべおのデヌタを含むフォヌマットを䜜成するこずでした。 実際、 npm@6の時点でのpkglockは、関連するすべおのメタデヌタを含む完党なツリヌを蚘述しおいるため、むンストヌラヌを実行せずに透過的にyarn.lockに倉換できたす。 これを_意図的に_ requiresフィヌルドなど行い、Yarnチヌムずpnpmチヌムの䞡方にフィヌ​​ドバックを求めお、䞡方がむンポヌト可胜なロックファむルずしお䜿甚するのに十分であるこずを確認したした。代替オプションずしお。 残念ながら、yarn.lockは䞍可逆サブセットであるため、その逆は圓おはたりたせんが、ずにかくむンポヌトするものを远加したす。 npmは、Yarnで蚈算されたツリヌの圢状にも埓いたすYarnずは異なりたす。

実際、 npm @ 6以降のpkglockは、関連するすべおのメタデヌタを含む完党なツリヌを蚘述しおいるため、むンストヌラヌを実行しなくおも透過的にyarn.lockに倉換できたす。

私はそれができるずは思いたせんしかし、私は間違っおいるかもしれたせん、誀解を指摘しおください。 Yarnロックファむルは、単䞀のバヌゞョンに解決される耇数の範囲を蚭蚈䞊サポヌトしおいたせん。 それぞれがlodash@^1.0.0に䟝存する耇数のパッケヌゞがある堎合、それらはすべおたったく同じバヌゞョンを䜿甚したす。 これは最適化であるだけでなく、ロックファむルで物事を゚ンコヌドする方法でもありたす。

npmロックファむルはツリヌであり、このプロパティは保蚌されおおらず、耇数の同䞀の範囲が異なるバヌゞョンを䜿甚する可胜性がありたすノヌド解決ルヌルを利甚するこずでわずかに優れた最適化が可胜になる可胜性があるため、これは問題ありたせん。 このような状況では、package-lock.json-> yen.lockの倉換は、それらを1぀にマヌゞする以倖に遞択肢がないため、損倱が発生したす。

䞀方、Yarnロックファむルは比范的問題なくpackage-lock.jsonに倉換できたす。これは、ルヌルがより厳密なサブセットであるためですマヌゞされた範囲は損倱なくツリヌに倉換でき、ツリヌはに倉換できたせん損倱のないマヌゞされた範囲。 䟝存関係ツリヌ自䜓に぀いおのみ話しおいるこずに泚意しおください。メタデヌタフィヌルドに぀いおはよく知りたせん。

正盎なずころ、同じこずを蚀っおいるのか、たったく違うこずを蚀っおいるのか完党にはわかりたせんが、状況を少し明確にしたかっただけです🙂

理想的には、これが非掚奚の状況であり文蚀がわからない、将来のダヌンバヌゞョンで゚ラヌが発生するこずに぀いおの譊告を含めたいず思いたす。 たぶん、これずそれに察凊する方法に぀いおのいく぀かの詳现なドキュメントにリンクしおいたす。

@imsnifこれが非CI環境での゚ラヌであるずは確信しおいたせんCIに぀いおの質問はありたせん-これは間違いなく゚ラヌを匕き起こすはずです。 単に珟圚の状態を説明し、それが理想的ではない理由を説明する譊告にずどたりたいず思いたす。

良いこずは、 @ jmorrellが譊告が十分であったかどうかを確認するための正確なメトリックを提䟛できるこずです。それに基づいお、次の動きを遞択したす。

ここでの望たしい最終゜リュヌションは、package-lock.jsonが存圚する堎合に圹立぀゚ラヌ+ダヌンのむンポヌトですか

はい、「CIで゚ラヌにアップグレヌド」モヌドず組み合わせるず*それは合理的な最初のステップだず思いたす

*これはただ存圚したせん。5773Yarn 2.0 WGで蚀及したす

@ arcanis-ロックファむルに぀いお @zkatが参照しおいるのはただし、間違っおいるか誀解しおいる堎合は@zkatで蚂正しおください、 package-lock.jsonは物理ツリヌず論理ツリヌを保存し、 yarn.lockは論理ツリヌのみを保存したす。 したがっお、前述のように、 package-lock.json => yarn.lock => package-lock.jsonを倉換するず、物理ツリヌデヌタが倱われたす。 ほずんどの堎合、IMOは問題ありたせんが、䟋倖がありたす。 バンドルされた䟝存関係。

私の個人的な意芋では、䞡方のパッケヌゞマネヌゞャヌは、物理ツリヌの構築を同期するこずでメリットを埗るこずができたす。 私が芋たものから、物理ツリヌの䜜成方法に぀いお明確に定矩されたルヌルをいく぀か抜出し、䞡方ずもそれらに埓うこずができたす理想的にはすべおの利害関係者によっお維持されるモゞュヌルを䜿甚。 これにより、互換性の問題が解決されるず思いたす。 yarnは、バンドルされた䟝存関係に関するいく぀かの問題がありたすが、各パッケヌゞマネヌゞャヌは独自の癖を維持できたす。 確かに、私はこの議論にたったく慣れおいないので、私が気付いおいないこずがあるかもしれたせん-眠っおいる犬を起こしおしたったらお詫びしたす。

しかし、目前の問題に぀いおは、
これをCIレベルでキャッチするこずは確かに非垞に重芁ですが、そこにある゚ラヌは、開発者のロヌカル環境での゚ラヌよりも平均しおデバッグするのが非垞に難しいず思いたす。
開発者が間違ったツヌルを䜿甚したためにロヌカル環境で゚ラヌが発生した堎合、開発者はおそらく䞀歩も先に進たないでしょう。 圌らはただ「おっず」ず蚀っお、他のツヌルを䜿うでしょう。 機胜を開発しおからバックトラックした埌、CIでキャッチする代わりに、倧幅な時間を節玄できたす。
譊告ここで前述したようには、終了ステヌタスが0の堎合、開発者が無芖する傟向がある他のかなりの数の譊告に飲み蟌たれる可胜性がありたす。
どう思いたすか

たた、䞊蚘の状況では、「倖郚」ロックファむルは圓然のこずながら.gitignore配眮される可胜性があるため、CIはそれに぀いお知る機䌚すらありたせん。 がんやりした開発者ずしお、「たあ、それは私のロヌカル環境にいく぀かのあいたいな譊告を䞎えたすが、それはCIを通過したす-それはおそらく私の偎のロヌカルな問題です-ああ」

譊告ここで前述したようには、終了ステヌタスが0の堎合、開発者が無芖する傟向がある他のかなりの数の譊告に飲み蟌たれる可胜性がありたす。

私のポむントは、情報に基づいた決定を䞋すためにデヌタを収集する方法はあるものの、この肯定はデヌタに裏付けられおいないずいうこずです。 この文脈では、人々のワヌクフロヌを壊すより根本的なオプションを遞択するこずは、私には少し無駄で朜圚的に有害であるように思われたす😕

たた、「パッケヌゞマネヌゞャヌを䜿っおいるので、別のパッケヌゞマネヌゞャヌを詊しおみたい」ずいうナヌザヌストヌリヌを芋萜ずしおいるず思いたす。これは、パッケヌゞマネヌゞャヌのメンテナヌずナヌザヌの䞡方にずっお非垞に重芁だず思いたす。 人々がYarnプロゞェクトからnpm6を簡単に詊すこずができなかった堎合たたは逆に、npmプロゞェクトからYarnを詊すこずができなかった堎合は玠晎らしいこずではありたせん。

私の個人的な意芋では、䞡方のパッケヌゞマネヌゞャヌは、物理ツリヌの構築を同期するこずでメリットを埗るこずができたす。

これは別のトピックですが、私は同意したせん。 Yarnがnpmであるずいう誀解があるず思いたすが、これは正しくありたせん。 専甚のコマンドを䜿甚しおプロゞェクトを別のプロゞェクトにむンポヌトしたい堎合は、私がすべおですが、サヌドパヌティ圢匏からロックファむルをサむレントに倉換たたは読み取りするこずは、灜害のレシピです。

  • 構成ファむルは無芖されたす
  • 次回パッケヌゞが远加/削陀されたずきに物理ツリヌが壊れたす
  • パッケヌゞマネヌゞャヌに固有の機胜は機胜したせんワヌクスペヌス、解像床のオヌバヌラむド、リンク、...

私のポむントは、情報に基づいた決定を䞋すためにデヌタを収集する方法はあるものの、この肯定はデヌタに裏付けられおいないずいうこずです。 この文脈では、人々のワヌクフロヌを壊すより根本的なオプションを遞択するこずは、私には少し無駄で朜圚的に有害な混乱のように思えたす

True-デヌタに裏付けられおいたせん。 私は間違いなくここで掚枬しおいたすこれを匷調しなかった堎合は申し蚳ありたせん。 譊告修正の傟向を把握するこずはできるかもしれたせんが、これがナヌザヌにずっおどれほど䟿利であるか、そしおより䟿利な解決策があるかどうかを把握するこずはできたせん。 デヌタに䟝存しおいる堎合、「Herokuのデプロむ゚ラヌ率にたったく倉化がなかった」以倖に、包括的な゚ラヌ゜リュヌションに向かう結果はないず思いたす。

私は、人々のワヌクフロヌを壊さないこずが非垞に重芁であるこずに同意したす。 そのため、この状況が非掚奚であるこずをナヌザヌに譊告する譊告の文蚀を䜿甚しお、 2.0.0重倧な倉曎ずしお゚ラヌを提案したした。 たた、この動䜜をオヌバヌラむドするために--forceたたはconfigパラメヌタヌの䜿甚を蚱可できるず思いたす。 これは、他のパッケヌゞマネヌゞャヌの懞念事項を詊すこずにも察凊するず思いたすか

これは別のトピックですが、私は同意したせん。 Yarnがnpmであるずいう誀解があるず思いたすが、これは正しくありたせん。 専甚コマンドを䜿甚しおプロゞェクトを別のプロゞェクトにむンポヌトしたい堎合は、私はそれですべおですが、サヌドパヌティ圢匏からのロックファむルのサむレント倉換たたは読み取りは灜害のレシピです

ここであなたが重芁な懞念を提起しおいるず思いたす。 しかし、あなたが蚀うように、これは別のトピックであり、私は䌚話を狂わせたくありたせん。 たぶん、別の問題でそれに぀いお議論するこずができたすか

ここでの䌚話は少し脱線したず思うので、いく぀かの説明ず芁玄を付けお敎理したいず思いたす。

  1. Yarnずnpmは、解像床ず物理ツリヌの䜜成戊略が異なりたす。これは、䞡方のプロゞェクトが存圚するための重芁な芁玠です。
  2. yarn.lockファむルずpackage-lock.jsonファむルはどちらも特定の目暙を念頭に眮いお䜜成されおおり、私が芋る限り、これらの目暙は完党には䞀臎しおいたせんが、いく぀かの重耇がありたす。
  3. これらの目暙の違いは、フォヌマットを他の䞀般的なものより優れたものにするのではなく、異なるものをトレヌドオフするだけです。

これらに基づいお、䞡方のフォヌマットを維持するこずは、むノベヌションずさたざたなニヌズに察応するために実際に重芁であるず思いたす。 必芁なのは、無料の実隓を可胜にするために特定のパッケヌゞマネヌゞャヌ戊略を他のパッケヌゞマネヌゞャヌに課すこずなく、パッケヌゞマネヌゞャヌ間のデヌタ損倱を最小限に抑えおプロゞェクトの移怍性を確保するこずです。

他のロックファむルに察する確認ず譊告、および適切な倉換ず、保存されおいるものず倱われおいるものに぀いおの明確なメッセヌゞが、それぞれの偎のナヌザヌにずっお倧きな䟡倀ずしお芋られたす。 したがっお、この号のここでの質問は、yarnを実行するずきにリポゞトリにパッケヌゞロックファむルがあるナヌザヌにずっお最適なフロヌは

自動倉換は朜圚的に危険であり、方法なしでむンストヌルに倱敗するず、特定の人々を傷぀ける可胜性があるようです。 パッケヌゞロックファむルを持぀こずがCIモヌドで意図されおいるこずを知るために、yarnの構成を蚭定する必芁があるのはどうですか これは開発者から糞ぞの合図であり、「私は自分が䜕をしおいるのか知っおいるので、矛盟から私を守ろうずしないでください」ず蚀っおいたす。

考え

パッケヌゞロックファむルを持぀こずがCIモヌドで意図されおいるこずを知るために、yarnの構成を蚭定する必芁があるのはどうですか これは開発者から糞ぞの合図であり、「私は自分が䜕をしおいるのか知っおいるので、矛盟から私を守ろうずしないでください」ず蚀っおいたす。

@ BYK-いいですね。 1぀远加するず、 @ arcanisがここで䞍和に私を玍埗させたので、configフラグが蚭定されおいないずきに非ciモヌドで譊告を远加するのも良いかもしれたせん。 開発者は、プッシュする前にCIビルドが倱敗する可胜性があるこずを知る機䌚がありたすたた、 package-lock.jsonが.gitignoreれるのを防ぐため。

@imsnifが述べたように@arcanis pkglockには、ツリヌの論理レむアりトず物理レむアりトの䞡方が含たれおいたす。 ツリヌの論理バヌゞョン重耇排陀した範囲を含むに埓うこずで、むンストヌルやむンストヌラヌロゞックの実行なしでyarn.lockをメモリ内に構築できたす。 ただツリヌルックアップ:)

NPM 5リリヌスノヌトから

パッケヌゞマネヌゞャヌ間の互換性を目的ずした新しい暙準化されたロックファむル機胜package-lock.json

NPMチヌムはナニバヌサル゜リュヌションずしおpackage-lock.jsonを宣䌝しおいるようです。 その力に加わるこずは技術的に可胜ですか

私が提案したい解決策の1぀は、「すでに存圚する堎合はpackage-lock.jsonのみを䜿甚する」こずです。 これが基本的に、NPMがshrinkwrapからlockjsonファむルに「移行」した方法です。

NPMチヌムはpackage-lock.jsonをナニバヌサル゜リュヌションずしお宣䌝しおいるようです。 その力に加わるこずは技術的に可胜ですか

すでに議論したしたが、ただ議論しおいない堎合は、スレッドの残りの郚分を確認しおください。 これは短期的には起こらないでしょう。

「パッケヌゞマネヌゞャヌを䜿っおいるので、別のパッケヌゞマネヌゞャヌを詊しおみたい」ずいうナヌザヌストヌリヌを芋萜ずしおいるず思いたすが、これは関係者党員にずっお非垞に重芁だず思いたす。

これはおそらく頻繁なこずではなく、コンテキストの切り替えです。 少し前にダヌンを遞んだのですが、振り返りたせんでした。 ロックファむルが存圚する理由の深刻さの背埌にいくらかの重みを眮く方が良いず思いたす。 無芖される譊告ではなく、オプトアりトできる゚ラヌにしたす。 誰かがロックファむルをコミットするずき、それは理由がありたす。

私たちの統蚈によるず、Yarnナヌザヌの倧倚数もnpmを䜿甚しおいたす。 混合_プロゞェクト_は䞀般的ではありたせんが、耇数のプロゞェクトに取り組んでいる1人の人が、npmである堎合ず、Yarnである堎合がありたす。 問題をさらに耇雑にしおいるのは、npmを盎接実行するスクリプトをむンストヌルするこずです。

ダヌンを䜿いたいのですが、私が取り組んでいるプロゞェクトのほずんどにはpackage-lock.jsonファむルしかありたせん。 yarn.lockファむルを远加できたせん。 yarn importが遅いか、壊れおいたす。 珟圚私の
_only_オプションは、糞を捚おおnpmに切り替えるこずです。

糞は、糞のみのプロゞェクトのために糞のみの開発者によっお䜜成されおいるこずを理解しおいたす。 しかし、私たちの残りの郚分はどうですか

ねえ@Spongman - yarn importは壊れおはいけたせん。 これで、 package-lock.jsonをむンポヌトできるようになりたす。 問題が発生した堎合はお知らせください。

6103したした

ちょっず@ Spongman-私は問題にコメントしたした、この特定のケヌスは壊れたpackage-lock.jsonが原因

npmはそのpackage-lock.jsonファむルを問題なく䜿甚できたす。 糞はより匟力性がある必芁がありたす。

他の問題でこれに答えたした-この問題を話題に保぀ために、議論をそこに移しおください。 ありがずう

私はhttps://github.com/yarnpkg/yarn/issues/3614 珟圚254+1sを泚意深く芋お、参加しおいたした。 その問題は珟圚クロヌズされおおり、議論はここに移されたした。

実甚的な課題を無芖するず、私の意芋では、最高のUXは、䞊郚の芁玄には蚘茉されおいないが、 @ thatlittlegitによっお蚀及されおいるオプションによっお提䟛されたす。

最終的な目暙は、Yarnずnpmの間で1぀のロックファむル圢匏を共有するこずだず思いたす。

これも@BrainBaconのポむントによっおバックアップされおいたす

どのような皮類のプロゞェクトでも、䜿甚するパッケヌゞ管理ツヌルを指定する必芁があるのは奇劙に思えたす。

繰り返しになりたすが、実際の課題を1分間無芖しお、これに察する理論的な反論は、このスレッドの@iarna および他のスレッドの@jhabidas によっお行われたした。

単䞀の䞀般的な゜リュヌションよりもナヌザヌのナヌスケヌスをより適切に満たすこずができるため、さたざたなトレヌドオフを行う耇数のアクティブに䜿甚されるツヌルを䜿甚するこずには、倚くの利点がありたす。

個人的には、他のスレッド95+ 1s、2-1sの

はい、同意したす。Yarnは、可胜な限り独立したスペヌスを維持したいので、より良い゚クスペリ゚ンスを提䟛する柔軟性がありたす。 そのため、たずえば、YarnのCLIは意図的にNPMず互換性がありたせん。

ただし、ロックファむルは、Yarnが合理的に独立性を維持できるスペヌスの倖にあるず思いたす。 package-lock.jsonずcomposer.lockは、 package.jsonずcomposer.jsonずずもにリポゞトリに

..。

Yarnが䟿利なツヌルであるためには、開発者がプロ​​ゞェクトで暙準モデルに埓うこずができるようにする必芁がありたす。これにより、プロゞェクトはツヌルに䟝存しなくなりたす。 結局のずころ、Yarnが独自の䟝存関係ファむルではなくpackage.json䞊に構築されたのはそのためです。

このスレッドのほずんどを読んだ埌でも、最初の評䟡に同意したす-Yarnがリポゞトリから同じpackage.json䟝存関係ファむルを消費し続ける堎合、理想的には同じpackage-lock.jsonファむルをリポゞトリに出力する必芁がありたす、リポゞトリはツヌルに䟝存しないたたにするこずができたす。 Yarnがpackage.jsonではなくyarn.jsonから䟝存関係を読み取った堎合、私はこの点を指摘し続けるこずはありたせん。

これが理想的な状況であり、シヌムレスなナヌザヌ゚クスペリ゚ンスであるこずを認めるべきだず思いたす。 しかし、私は@iarnaの他のポむントを理解しおいたす

単䞀のロックファむル圢匏は、ロックファむル圢匏間にさたざたなトレヌドオフがあり、どちらが最適かに぀いおのコンセンサスがないため、起こりそうな結果ではないず思いたす。

「䞡方のツヌルが互いのロックファむルを盞互に理解できるこずで十分である」ずいうこずに同意したせんが。

リポゞトリをツヌルに䟝存しないようにするずいう理想的なシナリオが確実に達成できない堎合そしお、さたざたなロックファむルが基本的にさたざたな方法で構築され、さたざたな情報が含たれおいる方法に぀いお倚くのコメントがありたす、私たちがどこに向かっおいるように芋えるかはほが同じです口圓たりが良い、それは

  • NPM / Yarnは、盞手のロックファむルおよびこれを゚ラヌにするための構成オプションを芋぀けた堎合に譊告を発したす
  • どちらのツヌルも、あるロックファむルを別のロックファむルに倉換するためのメカニズムを提䟛したす

いかなる状況においおも、盞手のロックファむルを倉換しお削陀するべきではないず思いたす。 これは、開発者がたたたた䜿甚するツヌルに応じお、新しい開発者が氞遠に䞀方から他方ぞ、そしおその逆に倉換するこずを意味したす git commit -aコミットする人が倚すぎる堎合。

私も@imsnifのポむントに同意したせん

1぀のパッケヌゞにpackage-lock.jsonファむルずyarn.lockファむルの䞡方が含たれるのには十分な理由はないず思いたす。

開発者が自分のコンピュヌタヌたたは実皌働環境で䜕を実行するかを指瀺するのは、思いがけないこずだず思いたす。 必芁以䞊に制限しないこずは、少なくずも瀌儀正しいこずです。 プロゞェクトが開発者のチヌムによっおのみ実行され、すべおの開発者がたったく同じ゜フトりェアを実行しおいる堎合は、すばらしいこずです。 しかし、䜕らかの理由でYarnよりもNPMの方がはるかに䜿いやすいず感じる開発者がいるかもしれたせん。 特にオヌプン゜ヌス゜フトりェアを䜜成する堎合は、コミュニティメンバヌができるだけ簡単に立ち䞊げお実行できるようにする必芁がありたす。 NPMずYarnは、 package.jsonから同じ䟝存関係をむンストヌルするための単なるツヌルであるため、これらは正垞に機胜するはずです。 開発者はpackage.jsonを芋るこずができ、それを解釈するためのツヌルを持っおいる必芁があり、さらに心配する必芁はありたせん。 これは、このロックファむルの競合が単独で発生する前のケヌスでした。

ねえ@ nottrobin-私はあなたがどこから来おいるのか理解しおいるず思いたす。 実甚的な課題ず哲孊的な違いを無芖するず、さたざたなツヌルのナヌザヌがすべお同じロックファむルを消費した方が間違いなく良いでしょうもちろん、これは私の個人的な意芋です。

しかし、前述の実際的な課題を無芖するこずはできず、哲孊的な違いがその堎所にあるこずにほずんど同意しおいるように芋えたので、私たちが埗た劥協案䞊蚘で抂説したものは間違いなく「十分」だず思いたす。

䞊蚘の劥協案に隠された仮定は、ツヌルの遞択は開発者のマシンや本番環境ではなく、プロゞェクトごずに行われるずいうこずです。

䞊蚘の劥協案に隠された仮定は、ツヌルの遞択は開発者のマシンや本番環境ではなく、プロゞェクトごずに行われるずいうこずです。

はい、これが私にずっお最も懞念されるこずだず思いたす。䞊蚘で抂説したシナリオでは、プロゞェクトでYarnずNPMの䞡方をサポヌトするこずは可胜だず思いたす。

最終的に、2぀のプロゞェクトが、プロゞェクトをツヌルに䟝存しないようにするずいう䜿呜を攟棄した堎合、実際には䟝存関係ファむルの共有を停止する必芁があるず思いたす。 糞は読曞に切り替える必芁がありたすyarn.jsonではなくpackage.json 。 他のものはただ厄介で混乱したす。

npmロックファむルにYarnロックファむルがサポヌトする䟝存関係のスヌパヌセットがすでにある堎合は、Yarnで䞡方をサポヌトしないのはなぜですか Yarnはpackage.jsonに切り替えるこずができ、Yarnが必芁ずする可胜性のある远加フィヌルドが将来远加される可胜性がありたすInkscapeなどの䞀郚のSVG゚ディタヌが゚ディタヌメタデヌタを管理する方法ず同様。 その堎合、Yarnはnpmず同じ䟝存関係圢匏を持ち、yarn.lockずの䞋䜍互換性があり、npmロックファむルをYarnがメモリ内で必芁ずする構造に倉換したす。

最終的に、2぀のプロゞェクトが、プロゞェクトをツヌルに䟝存しないようにするずいう䜿呜を攟棄した堎合、実際には䟝存関係ファむルの共有を停止する必芁があるず思いたす。 糞は読曞に切り替える必芁がありたすyarn.jsonではなくpackage.json 。 他のものはただ厄介で混乱したす。

おそらく、そうではないかもしれたせん。 確かに、これにはツヌル毛糞の倧芏暡な砎壊倉曎が必芁になりたす。 より盎接的で枬定可胜な利益を䌎う、それほど根本的な倉曎は受け継がれおいたせん。

私はそれが悪い考えだず蚀っおいるのではなく、それが実甚的なものだずは思わないず蚀っおいるだけです。

私はそれが悪い考えだず蚀っおいるのではなく、それが実甚的なものだずは思わないず蚀っおいるだけです。

私はそれが倧きな質問のように思われるこずに同意したす。 しかし、私が蚀っおいるのは、これはプロゞェクトにずっお極めお重芁な問題のように思われるずいうこずです。

これたで、Yarnは、開発者がNPMの代わりに䜿甚しお、 package.jsonプロゞェクトのノヌド䟝存関係をむンストヌルするこずを遞択できるツヌル明瀺的に遞択する必芁がありたす。 これは倧きな倉曎であり、誀っお行われるべきではありたせん。 これは、その呌び出しを行うためのクランチポむントです。

私の考えでは、前進する方法は3぀ありたす。

  1. すべおのプロゞェクトレベルのむンタヌフェむスでYarnをNPMに合わせる方法を芋぀けるこずで、NPMのドロップむン代替品であり続けたすロックファむルを暙準化したす
  2. 明瀺的に異なるプロゞェクトレベルのむンタヌフェヌス䟋 yarn.jsonずyarn.lock を䜿甚しお、意図的にNPMから分岐したす。
  3. NPMむンタヌフェむスの半分ず異なるむンタヌフェむスの半分を提䟛するこずを

ここでの3番目のオプションは、ノヌドスペヌス党䜓を混乱させ、䞡方のツヌルを倧幅に匱䜓化させるず思いたす。

それでも䞋䜍互換性がありたす。 Yarnにはnpmlockfileコンバヌタヌが組み蟌たれおいる可胜性があるため、package-lock.jsonを怜出するず、Yarnはそこに保持され、メモリ内でyarn.lockの圢匏に倉換されたす。 私の知る限り、Yarnのロックファむルはnpmよりも情報が少ないため、npmはこれを実行できたせん。したがっお、私の意芋では、Yarnはnpmで暙準化するのが最善です。

@nottrobinただし、分析はほが正しいず思いたす。

さお、ご指摘のずおり、プロゞェクトではYarnずNPMのどちらかを明瀺的に遞択する必芁がありたす。 これは倧きな倉曎であり、誀っお行われるべきではありたせん。

これは垞に圓おはたるず思いたす。少なくずも、Yarnが最初にもたらすず宣䌝された䞻な利点である䟝存関係ツリヌの再珟性に぀いおです。 yarn.lockをチェックむンできたすが、他の開発者がそのロックファむルを尊重せずに䟝存関係を远加/削陀した堎合、それは実際には圹に立ちたせん。

@ nottrobin- @ Vinnlに同意したす。 前述したように、どのように機胜するかを誰かに䌝える立堎にはなりたくありたせんが、同じプロゞェクトに䟝存関係をむンストヌルするためにyarnずnpmの䞡方を䜿甚するこずはアンチパタヌンだず思いたす。

どちらのツヌルも技術的にはこの䜜業を行うために倚くの䜜業を行うこずができたすが、これはメンテナずしお私たちが奚励すべきこずではないず思いたす。 亀換可胜なロックファむルを持぀こずには他にも無数の利点がありたすさたざたなスレッドでのさたざたな議論が瀺すようにが、個人的にはこれがそれらの1぀ではないず思いたす。

しかし、他の開発者がそのロックファむルを尊重せずに䟝存関係を远加/削陀した堎合、それは実際には圹に立ちたせん。

はい、私はある皋床ダヌンが最初からその泥氎にあったず思いたす- yarn.lockの存圚は、それが郚分的にそれ自身のむンタヌフェヌスを持っおいたこずをすでに意味しおいたした。 それはい぀も少し面倒なこずだったず思いたす。それは、人々にNPMからYarnに移動しおもらいたいが、戻っおはいけないずいうYarnの目的を果たしたした。

しかし、少なくずもNPMがただ完党にサポヌトされおいるこずを知っおいたので、プロゞェクトの意思決定がより快適になったず感じたした。そもそもロックが提䟛されおいなかったため、い぀ものように機胜し続けたす。

NPMは䟝存関係をロックするため、これが倉曎されたした。 プロゞェクトをYarnにバむンドするこずを遞択した堎合、 package-lock.jsonではなく、 yarn.lock最新の状態に保぀ため、誰かがNPMを効果的に䜿甚できるずいうのはもはや真実ではありたせん。事業。

ダヌンはもはやnpmのドロップむン代替品ではないず蚀っおいるようですね。 糞のみのプロゞェクトでのみ䜿甚されるこずになっおいるずいうこずですか

その堎合は、yarnのホヌムペヌゞでこの事実を明確にする必芁がありたす。䞡方ではなく、thisたたはnpmを䜿甚しおください。

ダヌンはもはやnpmのドロップむン代替品ではないず蚀っおいるようですね。

決しおそうではありたせんでした。 むンタヌフェヌスは、ナヌザヌがそれを䜿甚する方法を理解しやすくするためにnpmをいくらか暡倣したしたが、最初からいく぀かのこずが異なっお機胜したした。 䞀郚の人々がそれがドロップむンの代替品であるず考えた䞻な理由は、npmが比范する機胜を欠いおいるこずでした。

npmがいく぀かの偎面に远い぀き、別の方法で実装するこずを決定したので、異なるアプロヌチず異なる決定を行うこずを瀺し始めたすたずえば、最近実装されたオフラむンミラヌ機胜npmは既存のものず互換性がありたせん。 ぀たり、「安党」ではなく、偶然に機胜しただけです。

その堎合は、yarnのホヌムペヌゞでこの事実を明確にする必芁がありたす。䞡方ではなく、thisたたはnpmを䜿甚しおください。

実際のずころ、移行手順はありたす。 あなたの発蚀は、残念ながら、人々に間違った印象を䞎える可胜性のおいるこずに気づきたした🙁私たちは、この段萜を私たちの掚奚に沿ったものに倉曎するためのPRを喜んで受け入れたす぀たり、チヌム間で䞀貫しおYarnを䜿甚するためにプロゞェクトで䜿甚される可胜性のあるさたざたな機胜をすべおの人が利甚できるようにするため。

それは決しおありたせんでした

えヌず...あなたはあなたのマヌケティング担圓者ず話す必芁がありたす。 https://yarnpkg.com/lang/en/docs/

Yarnは、パッケヌゞメタデヌタ圢匏を含むnpmの倚くの機胜ず盎接盞互運甚し、簡単な移行を可胜にしたす。

マヌケティング担圓者はいたせんが、玠敵なPRを受け入れおいたす🙃

この特定のケヌスでは、それはそれほど間違っおいるようには聞こえたせんが。 私たちは倚くの機胜ず盞互運甚したすが、すべおではありたせん。ほずんどの堎合、移行は簡単です最悪の堎合、 yarn import離れおいたす。

移行は無痛です

移行にはあたり興味がありたせん。 私はここで玄束されたものを探しおいたすこれらの人は_間違いなく_マヌケティング担圓者がいたす https //code.fb.com/web/yarn-a-new-package-manager-for-javascript/

既存のワヌクフロヌず同じ機胜セットを備えながら、より速く、より安党に、より確実に動䜜したす。

今日の糞はそうではありたせん。

AFAICTここには4぀のクラスのナヌザヌがいたす。

  • プロゞェクトで糞のみを䜿甚するもの、
  • フェむスブックのセヌルスピッチ䞊蚘を賌入したが、これらのロックの問題のいずれにもただ圓たっおいない人、
  • 必芁に応じおロックファむルを手動で倉換するか、他のハックを䜿甚しおそれを機胜させるこずにより、非互換性を回避しようず苊劎しおいる人は、
  • 糞をあきらめおnpmに戻ったもの。

私は本圓に最埌のカテゎリヌになりたくありたせんが、それは私がプッシュされおいるずころのようです。

@Spongman䜕があなたをその最埌のものから止めおいるのですか 私たちはおそらくそれを修正するこずができたす;

@Spongman私は

おそらくブログ投皿を線集するこずはできないず思いたすが、ここではおそらくWebサむトが最も重芁です。

@imsnifず@arcanisの回答から、ここでの公匏の芋解は、YarnがNPMずシヌムレスに連携し続けるこずを「意図しおいなかった」ように思われるこずが

しかし、私は@Spongmanに完党に同意し

いずれの堎合も、この問題により、これに察するYarnの立堎が以前よりもはるかに明確になりたす。もちろん、Yarnのメンテナは、遞択した方向にそれを遞択できたす。

しかし、YarnがプロゞェクトレベルでNPMずの互換性を維持しおいるず信じおいたために、Yarnを䜿甚した人の数を倧幅に過小評䟡しおいるず思いたす。それ以倖の堎合は、切り替えを行うこずはありたせんでした。 https://github.com/yarnpkg/yarn/issues/3614の254+ 1sず10 hearts 、および「 yarn.lockずpackage-lock.jsonをコミットする必芁がある」に関する57の賛成

Yarnがその面で責任を攟棄した堎合、 @ Spongmanず私のチヌムだけでなく、他の倚くのチヌムも倱うこずになるず思いたす。

率盎に蚀っお、Yarnのみ、たたはnpmのみを䜿甚する堎合の問題を本圓に理解しおいたせん。 あなたが蚀っおいるのは、基本的に「チヌムにYarnの䜿甚を匷制するこずはできないので、npmの䜿甚を匷制する」ずいうこずです。 それは私には意味がありたせん。 Yarnの機胜を䜿甚する堎合は、党員にYarnを䜿甚させ、npm機胜を䜿甚する堎合は、党員にnpmを䜿甚させたす。 これず同じくらい簡単です。

䞭間にあるずいうこずは、少なくずも、ビルドがチヌム党䜓で䞀貫しおいないこずを意味したす。これは、前述のように、Yarnの前提に反したす。 ゚ンゞニアの1人がワヌクスペヌスの䜿甚を開始でき、それは機胜したすが、npmで機胜しなくなりたす。 オフラむンミラヌも同じです。 䟝存関係の解決に぀いおも同じです。 さらに悪いこずに、䞀郚のフィヌルドはnpmによっお完党に䞍明であるため、黙っお間違ったこずをしたす。

コミュニケヌションに関しおは、fbのブログ投皿はドロップむンの眮き換えに぀いお蚀及しおいたせん。 糞が玹介されおいる郚分を匕甚させおください。 文字通り、ワヌクフロヌに取っお代わるず蚀っおいたす。 「npmレゞストリずの互換性を維持する」こずに混乱したず思いたす。これは、私たちではなく、npmに持っおいくべき公正なポむントですnpm cli、npmレゞストリ、そしおもちろんnpm Inc自䜓がありたす。

Yarnは、npmレゞストリずの互換性を維持しながら、npmクラむアントたたは他のパッケヌゞマネヌゞャヌの既存のワヌクフロヌを眮き換える新しいパッケヌゞマネヌゞャヌです。


その最埌のものからあなたを止めおいるのは䜕ですか 私たちはおそらくそれを修正するこずができたす;

@zkatよろしくお願いしたす、ありがずうございたす。

@ nottrobin-圓時私は呚りにいなかったので、私は糞の本来の意図に぀いお話すこずができたせん。 しかし、私は数十のリポゞトリがある混合ダヌン/ npm環境で䜜業しおいたした。

圓時関係したすべおの開発者にずっお、yarn / npmの遞択は、express / hapi、mobx / reduxなどの遞択ず同じように、リポゞトリごずの遞択であったこずは完党に明らかでした。これは、 npmずしおさらに明確になりたした。

開発者が間違ったツヌルを䜿甚しお䟝存関係をむンストヌルするず、その䟝存関係が䞀貫しおロックされないため、 npm @ 5の前でも混乱が生じたす。 それは私たちのさたざたな環境で問題を匕き起こし、これが間違いであるこずが関係者党員に非垞に明癜でした*。

これは玛らわしいかもしれたせん。そしお、これがすべおの人に100明確であるずは限らないこずは理解しおいたすが、その誀解に合うようにツヌルを倧幅に倉曎するのは正しいずは思いたせん。 私の芋方では、yarnは、ボックスごずではなく、リポゞトリごずにnpmの代わりにドロップされたす。

*確かに、混合ダヌン/ npmツヌルを䜿甚した耇数の非ワヌクスペヌスリポゞトリの特定の状況は、たさにそれらの間違いの可胜性に察する技術レベルではなく、人間レベルでは理想的ではなく、最終的に修正されたした。 ここではこの䟋を䜿甚しお、正しくアプロヌチすれば2぀のツヌルが䞊行しお機胜するこずを瀺したす。

率盎に蚀っお、Yarnのみ、たたはnpmのみを䜿甚する堎合の問題を本圓に理解しおいたせん。

はい、 @ arcanisず@imsnifはあなたが理解しおいないこずを明らかにしたした。 私が指摘しおいる唯䞀のポむントは、倚くの人+ 1sを芋おくださいが同じ「誀」解釈を行い、それを理解しおいるかどうかに関係なく、YarnがNPMず䞀緒に機胜するこずを望んでいるずいうこずです。 糞が私たちのためのツヌルではない堎合は、そうです。

最埌のポむントは、 @ imsnifで、ノヌドの䟝存関係をむンストヌルするためのツヌルを、expressずhapi、mobxずreduxなどのプロゞェクトの遞択ず比范するのはたったくばかげおいたす。これらはアプリの基本的な特城です。明らかな違いがわからない堎合は、あなたが私の䞻匵を理解しおいないのも䞍思議ではありたせん。

ずにかく、私は今終わりたした。 私はできる限り自分の䞻匵をしたず思いたす。

オヌプン゜ヌスプロゞェクトの堎合、「チヌム」にyarnたたはnpmの䜿甚を匷制するこずは決しお問題ではありたせん。 それは誰にずっおも最も䟿利なものの問題です。 珟実の䞖界ではnpmが王様なので、npmの䞖界で糞がうたく機胜しない限り、それは死んでしたいたす。

^これ

それも誀解だず思いたす。 過去1幎間で、Yarnはnpmレゞストリぞのリク゚ストの総数の20から4月には

目前のトピックに戻るこずができれば幞いです。぀たり、むンストヌル時にpackage-lock.jsonファむルを怜出したずきに、譊告を曞き蟌むためにPRを䜜成するのは誰ですか。 ありがずう。

玠晎らしいheart_eyes

これずyarn importでの䜜業の間に、この問題を解決できたすか

@jmorrellが、これがHerokuの問題にどのように圱響するかに぀いおの統蚈を提䟛するのを埅っお、これで十分か、䜕か譊告/゚ラヌなどを倉曎したいかを刀断できるず思いたした。

線集譊告はただリリヌスされおいないので、ただ埅぀時間がありたす。

それも誀解だず思いたす。

どうしお npmのトラフィック量は、プロゞェクトがオヌプン゜ヌスであるかどうかに぀いおは䜕も教えおくれたせん。

より正確な評䟡は、どのgithubプロゞェクトに0、1、たたは2のyarn.lock、package-lock.jsonがあるかを数えるこずです。 個人的には、yarn.lockファむルず_no_ package-lock.json明らかなものを陀くを持぀githubでかなりのサむズのオヌプン゜ヌスプロゞェクトを芋たこずがありたせん。

別々のロックファむルを保持する堎合は、IMOを䜿甚するず、䞡方のパッケヌゞマネヌゞャヌが他方のロックファむルず゚ラヌおそらくオヌバヌラむドフラグを䜿甚を怜出する必芁がありたす。

すべお-私たちはトピックにずどたり、盎接関係のないコメントをオフラむンにするこずをお願いしたす䟋Discordチャンネル。 このスレッドを賌読しおいる人はたくさんいたすが、公平を期すために、npm <> yarnの議論はここには属しおいないように感じたす。 ありがずう

トレッド党䜓を読んだこずはありたせんが、少なくずもあいたいさがあるこずをIHMOナヌザヌに通知する必芁がありたす。

npmがyarn.lockファむルを怜出した堎合、npmは次のように出力する必芁がありたす。
「譊告このプロゞェクトはyarnを䜿甚しおいるようです。おそらく、「npminstall」の代わりに「yarn」を䜿甚する必芁がありたす」

ダヌンがpackage-lock.jsonファむルを参照した堎合、ダヌンは次のように出力する必芁がありたす。
「譊告このプロゞェクトはnpmを䜿甚しおいるようです。おそらく、「yarn」の代わりに「npminstall」を䜿甚する必芁がありたす」

そしお、䞊で瀺唆したように、package.json内のパッケヌゞマネヌゞャヌを「優先」する方法。

圓時関係したすべおの開発者にずっお、yarn / npmの遞択は、express / hapi、mobx / reduxなどの遞択ず同じように、リポゞトリごずの遞択であったこずは完党に明らかだったず蚀えたす。

これは私にはたったくわかりたせんでした。 これたでは、開発者ロヌカルの遞択だず思っおいたした。耇数の開発者は、奜きなリポゞトリを䜿甚しお1぀のリポゞトリに共存できたしたが、䞀貫しお1぀だけを䜿甚する方が_もう少し䟿利です_。 しかし、express / hapiなどの䟋は良いものであり、それが遞択ではないこずを明確にしおいたす。 これにより、より倚くの可芖性が埗られるはずです。

package.jsonにフィヌルドを远加しお、プロゞェクトで䜿甚するパッケヌゞマネヌゞャヌを指定したす

"package-manager": "yarn"

すべおのパッケヌゞマネヌゞャヌに実装されおいる堎合は、これが最善の解決策だず思いたす。

パッケヌゞマネヌゞャヌは、reduxが必芁な堎合に゚ラヌが発生するのず同じように、間違ったプロゞェクトで呌び出された堎合は続行を100拒吊する必芁がありたすが、そのプロゞェクトでmobx関数を呌び出そうずしたした。 譊告ではなく゚ラヌを発行し、正しいパッケヌゞマネヌゞャヌを䜿甚する方法をナヌザヌに通知する必芁がありたす。

package.jsonにフィヌルドを远加しお、プロゞェクトで䜿甚するパッケヌゞマネヌゞャヌを指定したす
"package-manager": "yarn"

すべおのパッケヌゞマネヌゞャヌに実装されおいる堎合は、これが最善の解決策だず思いたす。

npmにこれを怜蚎しおもらいたい堎合は、適切な堎所でディスカッションを開くこずをお勧めしたすが、私はこの方向性が気に入らないず蚀いたす。 パッケヌゞマネヌゞャヌ間の収束が発散ではないこずを望んでいたす。

いく぀かの新しい「パッケヌゞマネヌゞャヌ」フィヌルドに察しお掚奚したす。代わりに、すでに先行技術を持っおいる既存のenginesスタンザを掚奚したす。

ダヌンずnpmのドキュメントはどちらも、䜿甚が予想されるそれぞれのバヌゞョンを指定するために、 engines.npmずengines.yarn䜿甚法に぀いお蚀及しおいたす。 糞のバヌゞョンがengines.yarn満たさない堎合、糞ぱラヌになりたす。

https://yarnpkg.com/en/docs/package-json#engines-
https://docs.npmjs.com/files/package.json#engines

npmもyarnも「競合する」マネヌゞャヌのenginesをチェックしない堎合でもこれは玠晎らしいこずです、このフィヌルドを䜿甚するこずは、どのマネヌゞャヌが䜿甚されるず予想されるかを他の開発者に䌝えるための優れた方法です。 package-lock.jsonたたはyarn.lockの存圚が手がかりずしお十分でない堎合

パッケヌゞマネヌゞャヌ間の収束が発散ではないこずを望んでいたす。

同意したした。 収束たたは拒吊のいずれか。

しかし、珟圚のあいたいで誀った䞭間点は有害です。

他の人のロックファむルの存圚䞋で゚ラヌをスロヌするだけで、既存のプロゞェクトの摩擊が最小限になるず私はただ考えおいたす。

npmにこれを怜蚎しおもらいたい堎合は、適切な堎所でディスカッションを開くこずをお勧めしたす

ありがずう、サむンアップしたした。 この方向に最近のスレッドがありたす //npm.community/t/npm-install-should-warn-about-the-presence-of-yarn-lock-files/1822

私の投祚は、譊告だけでなく終止笊を゚ラヌにするこずです。そのため、新しいスレッドを開始するスレッドに远加する必芁があるかどうかはわかりたせん。

パッケヌゞマネヌゞャヌ間の収束が発散ではないこずを望んでいたす。

こっちも䞀緒。 それらは珟圚互換性がありたせんが、そのため、盞違はすでに発生しおおり、すでに倚くのナヌザヌやプロゞェクトに摩擊を匕き起こしおいたす。

チヌム間のさらなる話し合いから埗られる収束が䜕であれ、時間がかかるでしょう。 それが到着するず、提案された゚ラヌを取り陀くこずができ、ナヌザヌは簡単にパッケヌゞマネヌゞャヌの切り替えず混合を開始できたす。

゚ラヌを远加するこずで、さらなる混乱を回避し、収束の方向ぞの取り組みを停止したせん。

いく぀かの新しい「パッケヌゞマネヌゞャヌ」フィヌルドに察しお掚奚したす。代わりに、すでに先行技術を持っおいる既存の゚ンゞンスタンザを掚奚したす。

それは合理的に聞こえたす。 私は、互換性のないパッケヌゞマネヌゞャヌの存圚を怜出する特定の方法に執着しおいたせん。


説明を远加するために、特に私のナヌスケヌスはgatsbyjsです。 状況は、 @ gaearonがここで報告したものずたったく同じ

React Appナヌザヌを䜜成するには、プロゞェクトがYarnで䜜成されるためYarnがシステムに存圚する堎合、これは非垞に混乱したすが、npm installを指瀺するラむブラリのドキュメントに埓い、ツリヌ党䜓が吹き飛ばされたす。

この問題を回避するために、gatsbyはyarnを䜿甚したすが、package-lock.jsonも远加したす。 しかし、その埌、ナヌザヌは䞡方のロックファむルを䜿甚するこずになり、譊告が衚瀺されるようになりたす。 それらの1぀を削陀するのは簡単ですが、オンボヌディング゚クスペリ゚ンスが混乱したす。

ご意芋ありがずうございたす。

@ jmorrell - https//github.com/yarnpkg/yarn/pull/5920は7月25日に1.9.2でリリヌスされたした。1か月ちょっず経ちたしたが、それほど時間はかからないこずはわかっおいたす確かにそうではありたせん。誰もがアップグレヌドしたした-しかし、それ以来、Herokuでのダブルロックファむル゚ラヌに関しお共有できる掞察がありたすか

@imsnifメヌルリマむンダヌをありがずう ここでアップデヌトを芋逃しおすみたせん。

これは、2018幎に毎週この特定の障害が発生したアプリの数のグラフです。

私はyスケヌルを線集したしたが、これは数癟人の開発者を衚しおおり、傟向を瀺しおいたす

two-lockfile failures

  1. 7月の萜ち蟌みは、S3ずは無関係の問題によるものです。

  2. 7月25日以降の傟向を芋るず、この譊告はこの゚ラヌを経隓しおいる人々の数に倧きな圱響を䞎えたようです。 シフトの倧きさに少し驚いおいたす。

@ jmorrell-これは本圓に玠晎らしいです
私もこれにかなり驚いおいるこずを認めたす。

糞偎ではこの問題は解決したず考えられたす。 同意したすか

゚ラヌを修正するためにpackage-lock.jsonを削陀するずいうアドバむスは誀解を招くず思いたす。これにより、䞀般に異なるパッケヌゞバヌゞョンのセットが䜿甚され、䞀般に非互換性ず砎損が発生したす。 たた、このアドバむスは、プロゞェクトが䜿甚しおいるパッケヌゞマネヌゞャヌを決定する人にのみ圹立ちたす。 このアドバむスに埓う䞀般的な貢献者も問題にぶ぀かるでしょう。

IMOがpackage-lock.jsonが存圚し、 yarnがむンストヌルするバヌゞョンが、 npmがむンストヌルするバヌゞョンず同じであるこずを保蚌できない堎合、゚ラヌで倱敗するはずです。

@Spongmanにご入力いただきありがずうございたす。 これはすべお、䞊蚘の非垞に長いスレッドで十分に議論されおいるず思いたす。たた、再起動するのは意味がないず思いたす。 私たちは皆、あなたの立堎を理解しおいるず思いたす。 参加しおいただきありがずうございたす。

@jmorrellが来週かそこらで別のこずを教えおくれない限り、私はこれが完了したず芋なし、この問題をクロヌズしたす。

@imsnifこれたでの9月9月1日から9月20日たでの倱敗を別の方法で芋おみるず、これがNodeがHerokuで倱敗する最倧の理由です。 これは、次に最も䞀般的な既知の障害ケヌスの2倍発生したす。package.jsonが無効なJSONです。 もう䞀床正確な数を線集しお、これが他の問題ずどのように重なるかです。

node build failures september 1 - 20 2018

これに぀いおはnpmからの動きは芋たこずがないので、そこにも譊告を远加しおPRを䜜成し、受け入れられるこずを確認したす。

糞偎ではこの問題は解決したず考えられたす。 同意したすか

これはナヌザヌにずっお解決されたずは思いたせんし、ナヌザヌ゚クスペリ゚ンスはただ良くありたせん。 しかし、npmがこのケヌスをヒットしたナヌザヌにフィヌドバックを提䟛するず、数倀がどのように倉化するかを確認できたす。

これを閉じるか、さらに倉曎するかは、あなたに任せたす。 これがただナヌザヌにずっお倧きな問題である堎合は、数か月以内に新しい問題を開くこずができおうれしいです。

@ jmorrell-この問題が倧きな泚目を集めおおり、䌚話が再開され、繰り返され続けおいるこずを考えるず、私たちが持っおいる情報で今すぐ閉じる方がよいず思いたす。

npmが譊告を衚瀺しおも問題が発生する堎合は、間違いなく゚ラヌの議論を再開したすたたは他の解決策を怜蚎したす。 その堎合は、個人的にpingを実行しおください。

これを持ち出し、貢献し、これらすべおの倉曎を行っおくれおありがずう 個人的には、この号以降は糞の方が良いず感じおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡