<p>ダヌンはおそらくファむルパスで解決されたパッケヌゞをキャッシュすべきではありたせん</p>

䜜成日 2016幎12月06日  Â·  75コメント  Â·  ゜ヌス: yarnpkg/yarn

機胜をリク゚ストしバグを報告したすか

私は_バグ_を掚枬したす。

珟圚の動䜜は䜕ですか
珟圚の動䜜がバグである堎合は、再珟する手順を提䟛しおください。

次のプロゞェクト構造があるずしたす。

component-foo/
└── package.json
└── index.js

yarn-test/
└── package.json

次のファむルを䜿甚したす。

component-foo/package.json 

{
  "name": "component-foo",
  "version": "1.0.0",
  "private": true,
  "main": "index.js"
}

component-foo/index.js 

console.log('foo');

yarn-test/package.json 

{
  "name": "yarn-test",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "component-foo": "file:../component-foo"
  }
}

今、あなたが実行$ yarn install内偎yarn-test/ずyarn-test/node_modules/component-foo/index.js次のずおりです。

console.log('foo');

ここで、 yarn-test/node_modules/ずyarn-test/yarn.lockを削陀し、 component-foo/index.jsを次のように倉曎したす。

console.log('bar');

今、あなたが実行$ yarn install内偎yarn-test/再び及びyarn-test/node_modules/component-foo/index.js次のようになりたす。

console.log('foo');

キャッシュされたバヌゞョンのcomponent-fooを䜿甚したすが、 component-foo/index.jsが倉曎されおいたす。

期埅される動䜜は䜕ですか

私はyarn-test/node_modules/component-foo/index.jsが最埌にこれになるはずだず思いたす

console.log('bar');

file:../ようなロヌカルパスでむンストヌルされたパッケヌゞは、倉曎されおいるかどうかわからない堎合は、キャッシュしないでください。

参考npmはそれらをキャッシュしおいないようです。

node.js、yarn、およびオペレヌティングシステムのバヌゞョンをお知らせください。

$ node -v
v6.9.1

$ yarn -V
0.18.0

macOS 10.12.1

最も参考になるコメント

@hantuzunなぜロヌカル䟝存関係をキャッシュするのですか それらはずにかくロヌカルなので、キャッシュされおいるかどうかに関係なく高速になりたす。

党おのコメント75件

これも私をだたしたした。 すべおのキャッシュをクリアせずにこれを回避する方法が必芁です。

この堎合、糞を䜿甚できるようにする方法は3぀あるず思いたす。

  1. @donaldpipowitchによる、すべおのロヌカル䟝存関係を無芖するずいう提案。
  2. キャッシュされたずきよりも埌でファむルが倉曎された堎合に、ロヌカルの䟝存関係を再むンストヌルしたす。 これには、このメタデヌタを保持する必芁がありたす。 ロヌカル䟝存関係の堎合、「解決枈み」列に次のような行を挿入できたす file://<path>@<cache_timestamp>
  3. yarn cache rm <package>やyarn cache add <package>などのコマンドを䜿甚しお、パッケヌゞ名でパッケヌゞを無芖したす。 すべおの䟝存関係。

2番目の提案が実装されるこずを望んでいたす。 そうでない限り、3番目のオプションは他の堎合にも圹立぀可胜性がありたす。 たずえば、 yarn cache add <package>を䜿甚しお、䟝存関係のダりンロヌド䞭に問題が発生した堎合に備えお、すでにキャッシュされおいる䟝存関係のキャッシュを曎新できたす。

@hantuzunなぜロヌカル䟝存関係をキャッシュするのですか それらはずにかくロヌカルなので、キャッシュされおいるかどうかに関係なく高速になりたす。

@ satya164その通りです。 ただし、ネットワヌクからの䟝存関係を意図的に倉曎した堎合は、3番目のアプロヌチが圹立぀傟向がありたす。

yarn cache ignore <package>ようなものが圹に立ちたす。 しかし、それらは盞互に排他的である必芁はないず思いたす。 パッケヌゞを無芖するこずは䟿利ですが、手䜜業が必芁です。 ファむルの䟝存関係は、デフォルトで無芖されおいれば、远加の䜜業なしで機胜させるこずができたす。

誰かが私に内郚ロゞックを説明できたすか

私の理解
file:䟝存関係が怜出されるず、 file-resolver.js起動したす。䟝存関係をコピヌする必芁があり、ハッシュされないこずを瀺しおいたす。 ハッシュがないずいうこずは、それがただキャッシュされるべきではないずいう意味ではありたせんか... しかし、 copy-fetcher.jsは、 nullを保持する代わりに、ハッシュを空の文字列に蚭定しおいるようです...これは問題ですか

@bestanderたたは@kittens倚分あなたはこれをもう少し説明するこずができたす... PRを䜜成するために少し助けを埗たいです♥

ハッシュずは、たずえばtarball-fetcherに䜿甚されるmd5ハッシュを意味したす。
このハッシュは、将来の怜蚌のためにyarn.lockファむルに远加され、解凍されたフォルダヌをキャッシュに保存するずきにフォルダヌ名にも远加されたす。
あなたは正しい方向に掘っおいたす、これを調べおくれおありがずう、PRは倧歓迎です。
あなたはおそらく壊れたナニットテストを远加するPRから始めるこずができたす

あなたはおそらく壊れたナニットテストを远加するPRから始めるこずができたす

さお、あなたの応答に感謝したす。 PRのレビュヌ担圓者ずしおあなたにpingを送信する必芁がありたすか、それずも他の誰かたたは誰もにpingを送信する必芁がありたす...

ええ、私にpingしたす

@bestanderおそらくこの問題はただ修正されおいないので、閉じるべきではありたせんか

はい、再床開く必芁がありたす。 PRのタむトルに「fixes2165」ず曞いたので閉店したした。 最初は継続的なPRになるず思っおいたしたが、このバグを修正するには、2぀のPRが必芁です。最初のPRは単䜓テストを远加し倱敗するアサヌションは実際にはアクティブではないため、CIは爆発したせん、 2番目のものは実際にそれを修正したす。

申し蚳ありたせんが、PRがマヌゞされるずgithubは問題を閉じたす

明らかにこれはただ問題ですか 正盎に蚀うず、䞀緒に開発するのはかなり面倒です。 それは私が仕事で個人レベルで少し混乱を匕き起こしおいたす。そこでは私はfile:を利甚しおモゞュラヌ開発環境を䜜成しおいたす。 厄介なのは、 package.jsonのfile:パスを䜿甚しお線集するすべおのロヌカルパッケヌゞで、曎新されたコンテンツをプルダりンするためにこれを行う必芁があるこずです。

eslint-config-base-eslintパッケヌゞの内容を線集する

yarn cache clean && rm -rf node_modules/eslint-config-base-eslint && yarn install --force && yarn lint

どなたでもプロゞェクトに貢献できたす。
それは䜕でもかたいたせん-この堎合の壊れた統合テスト、修正を提出するか、誰かに修正に取り組むように説埗したす。
それにアプロヌチするための最良の方法に぀いおチャットしたい堎合は、discordチャンネルでヘルプを芋぀けるこずができたす。

実際、修正は10〜15行のコヌドである必芁があるず思いたす。おそらく、より早く修正するこずで倚くの時間を節玄できたす。

参考この問題は、遅いlinking dependenciesステップにも関連しおいる可胜性がありたす。 ここで私のコメントを参照しおください https //github.com/yarnpkg/yarn/issues/1496#issuecomment-282688818。

ごめんなさい。 私はこの問題のために別のPRを䜜成する時間を芋぀けるこずができたせんでした:(私はそしおただずおも忙しかったです。

@bestanderこれは私にずっおかなり倧きなブロッカヌであり、マルチモゞュヌルプロゞェクトに取り組んでいたす。 @donaldpipowitchのコヌドリンクずコメントを正しく読んでいる堎合、ファむルリゟルバヌが解決しようずするたびにnullではなく新しいhash䜜成しお、再むンストヌルを匷制するこずができたすか UUIDたたは珟圚のタむムスタンプを蚀いたすか 䜕かが足りない堎合はご容赊ください。コヌドの動䜜方法に慣れおいたせん。

タむムスタンプずuuidを備えた新しいキャッシュは、合理的なハックのように聞こえたす。
理想的には、キャッシュなしでファむルを盎接コピヌする必芁がありたすが、
より耇雑な倉曎。
PRを送っおください

午前3時38時火曜、2017幎3月7日には、マットTraynhamの[email protected]は曞きたした

@bestanderhttps //github.com/bestanderこれはかなり倧きなブロッカヌです
私にずっおは、マルチモゞュヌルプロゞェクトに取り組んでいたす。 @donaldpipowitchを読んでいる堎合
https://github.com/donaldpipowitchのコヌドリンクずコメント
正しく、ファむルリゟルバヌに代わりに新しいハッシュを䜜成させるこずができたすか
null解決しようずするたびに、再むンストヌルを匷制したすか UUIDを蚀う
たたは珟圚のタむムスタンプ 䜕かが足りない堎合は蚱しおください、私はなじみがありたせん
コヌドが機胜する方法で。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。

このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/yarnpkg/yarn/issues/2165#issuecomment-284612526 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/ACBdWDS3xSr8KNu1o9Zn8sA9xdO8pyHOks5rjNEmgaJpZM4LFbmf
。

@bestander最埌のコメントに぀いおファむルをコピヌする代わりに、シンボリックリンクする方が理にかなっおいたすか それずもそれをしない理由はありたすか

@danrot Windowsでは、管理者がシンボリックリンクする必芁があるようです。
たた、ノヌドモゞュヌルを芋぀けるために再垰的に混乱したす

シンボリックリンクも.npmignoreなどを無芖したす。 これも珟圚無芖されおいるようです。問題が発生する可胜性がありたすhttps//github.com/yarnpkg/yarn/issues/1496#issuecomment-282688818

珟圚、キャッシュ党䜓のクリアを犁止しおいる回避策はありたすか 残念ながら、 yarn cache rm packageようなコマンドはないようです。

@ rhys-e私はこの小さなスクリプトを䜿甚したす

#!/bin/sh
if [ $# != 1 ]
then
   echo Usage $0 package-name
   exit 1
else
    echo Reinstalling $1
fi

dir="node_modules/$1"

if [ -d $dir ]
then
    rm -fr $dir
fi

cache=`yarn cache dir`/npm-${1}*
#        echo $cache
rm -fr $cache && yarn install --force

誰もがちょうどしようずしおいたすyarn link䞊のすべおのロヌカルの䟝存関係postinstall  適切な修正が行われるたで、適切な解決策のように芋えたす。

ロヌカル䟝存関係の倉曎のたびにパッケヌゞのバヌゞョン番号を曎新する必芁がないずいう考えだず思いたす。 糞のリンクはあなたにそれを匷制するでしょうね 詊したせんでした

私の偎では、最終的に行ったのは、むンストヌル前のフェヌズでスクリプトを呌び出しお、ロヌカルの䟝存関係に぀いお゜ヌスフォルダヌずnode_modulesフォルダヌにあるものを比范するこずです。 違いを怜出するず、キャッシュされた䟝存関係を削陀し、敎合性ファむルを削陀したす再むンストヌルを匷制するため。 したがっお、倉曎がない堎合、yarnのむンストヌルは非垞に高速でありロヌカル䟝存関係は倚くありたせん、叀いキャッシュバヌゞョンがある堎合は䜿甚されたせん。

@lucdew linkは基本的に

./node_modules/の䞋にある芪プロゞェクトのむンストヌル枈みバヌゞョンで曎新されないロヌカルパッケヌゞの倉曎を回避するために、さたざたな組み合わせをテストしたした。 ./node_modules/を削陀しなくおも、これで十分だず思いたす。最初

yarn cache clean; yarn upgrade file:../<package>

蚀うたでもなく、ロヌカルパッケヌゞを曎新/アップグレヌドするために、手動でグロヌバルキャッシュのクリヌンアップを匷制する必芁はありたせん。

@fungilation回避策ずしお、npmを䜿甚しおロヌカルの䟝存関係をむンストヌルし、曎新が必芁になるたびにキャッシュ党䜓が倱われるのを防ぐこずもできたす。

2860ずそれに続くマヌゞコミットhttps://github.com/yarnpkg/yarn/commit/7241de13bb236526fa439a2528fbed319f60ef24に埓っお、 file:プロトコルの䟝存関係を「曎新」できるようになりたした。

yarn install --force

特定のパッケヌゞを線集たたはアップグレヌドしたすこれも機胜するこずに気づいおいたせんでした。 䟝存関係のバヌゞョンが倉曎されおいない堎合、ロックファむルは倉曎されたせんが、新しいバヌゞョンがコピヌされたす。

yarn upgrade [file protocol package name]

PRの倉曎により、キャッシュ内の䟝存関係が無効になり、ロヌカルに再むンストヌルされたす。 yarn installは、䟝存関係のバヌゞョンが倉曎された堎合にも機胜し、yarn.lockファむルが無効になりたす。 キャッシュをクリアしたり、ロヌカルむンストヌルからモゞュヌルを削陀したりする必芁がなくなりたした。

たた、おそらくlink:プロトコルを䜿甚しお、䟝存関係をリンクするためのアクティブなRFCがあるこずも明らかになりたした。 これは、 https//github.com/yarnpkg/rfcs/pull/34でフォロヌでき

@mtraynhamプルリク゚ストありがずうございたす 👌これは玠晎らしいです。 --forceが必芁な理由は䜕ですか 私は珟圚、それを調べずに正確に䜕をしおいるのかさえ知りたせんnpmは--forceフラグを必芁ずせず、npmのように振る舞うのが良かったので、ただ尋ねおください。

線集yarn upgrade [dependency]機胜するようです。 指摘したいのですが、これは垞にロックファむルを倉曎するわけではなく、package.jsonのバヌゞョン倉曎のみを反映する必芁がありたす。 アップグレヌドの方がおそらく適切なので、元の投皿を曎新したした。


短いバヌゞョンでは、ロックファむルが倉曎されおいない堎合、Yarnはキャッシュリゟルバヌに察しお䜕も実行しないため、ロックファむルのチェックをスキップしお、新しいバヌゞョンがあるかどうかをキャッシュに確認する必芁がありたす。 これは、 upgradeたたはinstall --forceを䜿甚しお実行できたす。

yarn install --forceドキュメントごず

「以前にむンストヌルされたものも含め、すべおのパッケヌゞを再フェッチしたす」。

これは、実際には、ロックファむルの敎合性チェックをスキップするこずを意味したす。 package.jsonファむルを倉曎せず、正垞にベむルアりトするず、通垞、ロックファむルの敎合性チェックに合栌したす。 それをスキップするず、キャッシュにロックファむルに察する䟝存関係の欠萜/䞍䞀臎をチェックし、欠萜しおいる堎合はダりンロヌドしお、新しい/欠萜しおいる䟝存関係をロヌカルにコピヌしお戻すように芁求したす。 次に、npm install / postInstallスクリプトを実行したす。

PRの倉曎により、キャッシュ内のfile:䟝存関係が無効になり、新しいバヌゞョンがロヌカルにコピヌされたす。 これ以前は、 file:䟝存関係が無効になるこずはありたせんでした。 他のプロトコルの堎合、package.jsonファむルを倉曎しなかった堎合、それらは倉曎されたせんキャッシュ内およびロヌカル内。

では、これは私たちにずっお䜕を意味するのでしょうか プロゞェクトには玄60の䟝存関係AngularからWebpackたでがあり、1぀のfile:䟝存関係がありたす。 ロヌカル䟝存関係のみを曎新したい2番目のinstall --forceでは、玄5秒かかりたす yarn install箄1.5秒から増加。 私にずっお、これはごくわずかであり、実際には、プロセス党䜓を通しお䜜業糞がほずんど実行されないこずに非垞に感銘を受けおいたす。

ロックファむルのチェックをスキップしお、特定のファむルの䟝存関係のみに぀いおキャッシュをチェックする別のCLIコマンドがある堎合、それはおそらくさらに高速ですが、私はそれを芋぀けおいたせん。


そうは蚀っおも、私はこれをバンド゚むドず呌んでいたす。 これは、 link:などのより良い゜リュヌションに眮き換えるこずができたす。 ロヌカルの䟝存関係をキャッシュするこずを本圓に気にかけおいる人はいないず思いたす。 少なくずも、 install --forceたたはupgradeを䜿甚するこずによる远加のオヌバヌヘッドはほずんど無芖され、 yarn cache clean; mv node_modules /tmp/を䜿甚する必芁はありたせん。

玠晎らしい答え。 👏これを曞き留めおいただきありがずうございたす。

ダヌンはロヌカルのシンボリックリンクされたプロゞェクトファむルをダヌンのキャッシュからのファむルで䞊曞きしたすか それが起こっおいるように芋えるので

PRの倉曎により、ファむルが無効になりたす。キャッシュ内の䟝存関係が無効になり、新しいバヌゞョンがロヌカルにコピヌされたす。

これは、䟝存関係ずしお"foo": "file:../"を持぀パッケヌゞ内で$ yarnを呌び出すたびに、 "file:../"新しいコピヌが䜜成されるこずを意味したすか

たずえば、パッケヌゞでもある耇数の䟋を含むパッケヌゞがありたす。

foo/
foo/examples/
foo/examples/example-1/
foo/examples/example-2/
foo/examples/example-3/
...
foo/examples/example-10/

そしお、私は今、糞のキャッシュにfoo 10回持っおいるようです。 たた、 fooバヌゞョン倉曎ごずに䟋をテストしおいるので fooだけでなく、耇数のモゞュヌルがそのように構成されおいたす、珟圚、yarnキャッシュが_本圓に_急速に増加しおいるように芋えたす。

これは正しい動䜜ですか

キャッシュに叀いバヌゞョンがあるよりも良い遞択肢だず思いたす。
ダヌン0.26では、ファむルをコピヌする代わりに、 link:を䜿甚しおシンボリックリンクを䜜成できたす。
たた、シンボリックリンクの䜜成を自動化するワヌクスペヌス https://github.com/yarnpkg/yarn/issues/3294にも取り組んでいたす

ええ、ワヌクペヌスを楜しみにしおいたす👍

link:はただnpmでは機胜したせんよね https://github.com/npm/npm/pull/15900はただ開いおいるためです。

npm 5パッチノヌトから、ファむルはfile:構文で自動的にシンボリックリンクされるようになりたした。

npm install ./packages/subdirは、通垞のむンストヌルの代わりにシンボリックリンクを䜜成するようになりたした。 file//path/to/tarball.tgzは倉曎されたせん–ディレクトリのみがシンボリックリンクされたす。 15900

そうそう、npmにはlinkはありたせん。

npm install ./packages/subdirは、通垞のむンストヌルの代わりにシンボリックリンクを䜜成するようになりたした

ちょっず残念です。 すべお node_modulesを含むをコピヌし、 .npmignoreたたはfilesフィヌルドを尊重しないため、ファむル郚門が同じように動䜜するこずはありたせんでした。 今ではシンボリックリンクでさらに悪化しおいたす。

fileずlinkはさらに改善される可胜性があるず思いたす。独自の長所ず短所を持぀さたざたな戊略があり、Yarnではナヌザヌが1぀を遞択できるようにする必芁がありたす。
たずえば、 knit RFCは、戊略の1぀ずしお実装できたすhttps://github.com/yarnpkg/rfcs/blob/master/accepted/0000-yarn-knit.md

@bestander

キャッシュに叀いバヌゞョンがあるよりも良い遞択肢だず思いたす。

たたは、ディスクスペヌスが䞍足しお、Yarnキャッシュが䜕癟䞇ものたったく圹に立たないファむルに数十ギガバむトを䜿甚しおいるこずがわかるたでは信じられないでしょう。
開発システムを䞀時的に壊したこずが䞀床だけわかるので、党䜓を以前よりも深刻に壊すIMO。

こんにちはみんな、この問題に関する最新情報はありたすか これは私たちにずっお本圓に倧きな問題です。特に、同じリンクされた耇数の䟝存関係に䟝存する耇数の補品に同時に取り組んでいる堎合はなおさらです。 開発の1日でギガバむトのキャッシュなど。少なくずもオプションにしお、そのようなパッケヌゞのキャッシュを無効にできたすか

@nikdojo䟝存関係にはfile:代わりにyarn link:プロトコルを䜿甚し、シンボリックリンクを䜿甚したす。 0.26で

たたは、プロゞェクト間の䟝存関係が倚い堎合は、ワヌクスペヌスの䜿甚を開始し

@mtraynham Thxのヒントずしお、公匏ドキュメントでlink:プロトコルに関する情報を芋぀けようずしたしたが、そこにはないようです。 今ワヌクスペヌスで実隓しおいたす。

@bestanderずころで、ご存知のように、react-nativeはシンボリックリンクをサポヌトしおいないため、rn libsを䜿甚する堎合、それは䟝然ずしお倧きな問題です。

これは決しお解決されたせんでしたか リンクロヌカルNPMパッケヌゞを䜿甚しおロヌカルパッケヌゞをリンクする必芁がありたすこれは、ロヌカルファむルシステムからパッケヌゞを消費するずきにyarnが動䜜する暙準的な方法です-キャッシュの代わりにWindowsでゞャンクションたたはシンボリックリンクを䜿甚したす。 次に、新しいyarn installがキャッシュからの叀いものですべおを䞊曞きし、リンクを最初からやり盎す必芁がありたす。

アヌキテクチャの宇宙飛行士を枛らしお、ロヌカルパッケヌゞをキャッシュしないこずはできたすか この問題は珟圚1。5幎前のものであり、 another-local-package䜕かを倉曎するたびにyarn add ../<another-local-package>を実行するのにうんざりしおいたす。

こんにちは@fungilation
私は別の関連する問題を開きたした6037

動䜜したせん
App.jsファむルに入れたした
console.log 'here we are'であり、出力されたせんでした。
次に、すべおのファむルを削陀しおも、キャッシュから出力が䜜成されたす。
これを回避する方法は

毛糞はこの問題で私を本圓に倱敗させたした。 これを陀いお、それは他のすべおにずっお玠晎らしいこずでした。

テスト目的でロヌカルパッケヌゞの新しいバヌゞョンをむンストヌルしようずしおいたすが、䜕をしおも叀いパッケヌゞになっおしたいたす。

私はもう詊した

  1. ダヌンキャッシュのクリヌニング yarn cache clean package-name 
  2. yarn add 'ing with --force
  3. node_modules/package-nameずyarn add再床削陀したす
  4. ロヌカルパッケヌゞのバヌゞョン番号ずファむル名を曎新したす yarnは、新しいが、叀いバヌゞョンのコンテンツをむンストヌルしたす
  5. 䞊蚘のすべおの組み合わせ

これはばかげおいたす、そしお私はこれに私の䞀日のほが4時間を費やしたした。

ロヌカルパッケヌゞを開発しお再むンストヌルする機胜が必芁です。 .binフォルダヌにファむルをむンストヌルするのにyarnに䟝存しおいるので、 yarn linkは問題倖です。

@ Yarn Developersロヌカルパッケヌゞをむンストヌルし、そのロヌカルパッケヌゞに倉曎を加えおから、再床むンストヌルするこずで倉曎を反映させるこずができたすか

@gregjacobs yarn install --force成功したした

@jonathantorley --forceでもう䞀床詊しおみたしたが、 yarn1.12.3ではただ機胜したせん

この問題に盎面しおいる他の人のために私が実際にこれを機胜させるために䜿甚した1぀の回避策は、䟝存パッケヌゞのバヌゞョン番号を増やすこずでした。 少し面倒で、倉曎のたびにそれを行うこずを忘れないでくださいスクリプトを䜜成できない堎合。

yarnは、ロヌカルパッケヌゞをむンストヌルするずきに、この回避策を絶察に必芁ずしないはずです。

preinstallスクリプトにyarn upgrade MY_PACKAGE_NAMEを远加したしたが、最新のNPMバヌゞョンにうたくアップグレヌドされたす。 それでも、NPMバヌゞョンを手動でバンプする必芁がありたす。

yarn add file:PATHは、垞に新しいコンテンツをyarn1.13.0でアップグレヌドしおいるようです。
yarn installただありたせん。

@leavessterそれでも私には向いおいたせん。

曎新するには、tgzの名前を倉曎する必芁がありたす

linkコマンドを䜿甚しおみおください https 

yarn add file:PATHは私のために新しいコンテンツをアップグレヌドしたせんでした。 さらに、package.jsonおよび.npmignore内のファむルは尊重されたせん。

パッケヌゞのバヌゞョンを倉曎するこずで機胜したす。

yarn add file:PATHでpackage.jsonず.npmignoreのファむルを尊重する堎合は、ロヌカルパッケヌゞの䟝存関係でyarn packを実行しおから、むンストヌルする堎所でyarn add file:path-to-local-pacckage.tgz実行する必芁がありたす。

linkコマンドを䜿甚しおみおください https 

yarn linkは、同じ問題に答えるこずを目的ずしたものではありたせん。 package.jsonず.npmignoreのファむルを尊重しお公開された堎合のように、誰かがnpmパッケヌゞを必芁ずする堎合は良くありたせん。

@leavessterそれでも私には向いおいたせん。

曎新するには、tgzの名前を倉曎する必芁がありたす

パッケヌゞにtgzがなく、 yarn add file: PACKAGE_PAHを䜿甚しお珟圚のプロゞェクトに远加しおいたす。 パッケヌゞにjsコヌドが含たれおいたす。 倚分tgzはただ間違っおいたすか

私のためにも働いおいない

@bestanderなぜこの問題は解決したのですか Yarnはただロヌカルファむルずtgzパッケヌゞをキャッシュしおいたす。 ワヌクスペヌスが解決策にならない堎合がありたす。たずえば、あるパッケヌゞに特定のバヌゞョンのdepsがあり、他のパッケヌゞに最初のパッケヌゞず同じパッケヌゞで別のバヌゞョンのdevDepsがあり、あるパッケヌゞを別のパッケヌゞにリンクするず、プロゞェクトが壊れおいる堎合がありたす。 。

@gregjacobsず同じ問題がありたす。 yarn cache clean packageは圹に立ちたせんでした。 しかし、 yarn add path/to/package.tgzをむンストヌルしおからアヌカむブを別のアヌカむブに眮き換えるず、新しいバヌゞョンをむンストヌルできるので、 yarn add path/to/../to/package.tgzようにパスを倉曎するだけで、絶察パスは同じですが、ダヌンの堎合は異なりたす。 。

yarn cache list --pattern packageが空であっおも、yarnがキャッシュされたパッケヌゞを解決パスでどこに保存するのかわかりたせん。

問題はここのどこかにあるず思いたすhttps://github.com/yarnpkg/yarn/blob/eb2b565bb9b948e87b11119482ebc184a9d66141/src/resolvers/exotics/tarball-resolver.js#L58-L63

䜕が起こっおいたすか

  • URLからpath/to/package.tgzはハッシュを生成したすそのため、 path/to/package.tgzずpath/to/../to/package.tgz結果は異なるハッシュになりたす
  • そのハッシュを䜿甚しお、パッケヌゞの䞀時ディレクトリを䜜成したすこのような/Users/kich/Library/Caches/Yarn/v4/.tmp/c019816ee7d10ed5e1fef4072e8cc617 
  • 最初の実行ではisValidModuleDest falseを返し、すべおがうたくいきたす
  • このディレクトリに抜出されたTarballパッケヌゞ
  • プロゞェクトにむンストヌルされたそのディレクトリのファむル
  • 開発プロゞェクト゜ヌスを倉曎し、前のものず同じ名前ず堎所で新しいパッケヌゞtarballをビルド/パックしたす
  • そしお、新しいtarballをむンストヌルしようずしたしたが、生成されたハッシュは以前ず同じであり、最初の実行埌に䞀時ディレクトリがクリアされたせんでした
  • したがっお、今回はisValidModuleDestがtrue返したす
  • そしお、あなたのパッケヌゞの叀いバヌゞョンをダヌンむンストヌルしたす
  • yarn cache clean package実行したすが、䞀時ディレクトリは倉曎されたせん。

@bestanderここで䞀時ディレクトリを削陀できたすか

同じ問題に盎面しお、ロヌカルパッケヌゞで1日だけ䜜業した埌、䞀時フォルダヌの䞋のキャッシュに10GBかかりたす。

この問題を再開できたすか 私たちは同じ問題に盎面しおいたす。 ファむルを介しお別のパッケヌゞを参照する2぀のプロゞェクト。 CI / CDサヌバヌでいく぀かのビルドを行った埌、キャッシュフォルダヌが倚くのスペヌスを占有し始めおいたす。

リンクプロトコルがこれに察する最善の修正だず思いたす。file//はただ手動でキャッシュをクリヌンアップしお匷制的にむンストヌルする必芁があるため、機胜したせん。

https://github.com/yarnpkg/yarn/issues/2165#issuecomment -345825904

䟝存関係を次のようにするだけです

"<package>": "link:./libs/<package>"

@alxtzリンクプロトコルはtgzのパッケヌゞで機胜したすか

リンクプロトコルがこれに察する最善の修正だず思いたす。file//はただ手動でキャッシュをクリヌンアップしお匷制的にむンストヌルする必芁があるため、機胜したせん。

2165コメント

䟝存関係を次のようにするだけです

"<package>": "link:./libs/<package>"

これに感謝したす。これは、 node_modules内のfile:..参照をシンボリックリンクするNPMの動䜜を耇補したす。 文曞化されおいないようですが、少なくずもここでは、 https 

残念ながら、 linkはすべおの堎合に䜿甚できるわけではありたせん。

たずえば、SDKパッケヌゞからの共有/ピア䟝存関係が必芁です。これを倉曎するず、ロヌカル開発䜜業にリンクしたす。
link 、yarnは䟝存関係が共有/ピア䟝存関係であるこずを認識せず、シンボリックリンクがあるロヌカルパッケヌゞを䜿甚したすが、これは正しくありたせん。

私が䜿甚しおきたyarn packず䞀緒にyarn add file:<path_to_packed_tgz>この問題を回避したす。
@wKichの玠晎らしい発芋によるず、同じハッシュを生成しないように、パッケヌゞをパックしおリポゞトリに貌り付けるたびにパッケヌゞの名前を倉曎し続けるこずができたすが、それは

yarn add file:<path>を䜿甚しお指定されおいる堎合、yarnがロヌカルの.tgzパッケヌゞをキャッシュからロヌドしないように、リポゞトリをフォヌクしおifステヌトメントに远加の句を远加したした。

const dest = this.config.getTemp(crypto.hash(url));
// If specified using file: never load from cache
if (!url.match(/file:/) && (await this.config.isValidModuleDest(dest))) {
  // load from local cache
} else {
  // continue as if it's a new package
}

人々が望むなら私はPRをするこずができたすが、私はこれたでにそれをしたこずがなく、それはかなりハッキヌな修正です。
このアプロヌチが匕き続きロヌカルパッケヌゞをyarnのキャッシュに远加するかどうかを誰かが確認できたすか

@ojbojの堎合、これが適切に修正されるたで、 yalcが圹立぀可胜性がありたす。 公開する前にロヌカルでパッケヌゞをテストするこずは、私にずっお非垞にうたく機胜しおいたす。

@souporseriousそれはたさに私が必芁/望んでいたこずです、どうもありがずうございたした

非垞識なこれは、䜕幎も経った今でも問題です。

それは[email protected]で修正されお

@wKich私はそう信じおいたす 個人的にテストしたこずはありたせんが、新しいポヌタルプロトコルを通じおロヌカル開発を解決しおいるよう

link:プロトコルを䜿甚しおも「同じ宛先で解凍」゚ラヌが発生し、キャッシュディレクトリを参照しおいるため、yarnはただlink:䟝存関係をキャッシュしおいるようです。 同じロヌカルパッケヌゞの2぀のコピヌを参照しおおり、それを䜿甚する各アプリの.deps/フォルダヌにコピヌされおいたす-以䞋の゚ラヌのfront-endずrenderer 。 関係のない理由でオリゞナルにリンクできたせん

warning Pattern ["@horizon/common<strong i="11">@link</strong>:packages/front-end/.deps/@horizon/common"] is trying to unpack in the same destination "/home/garyo/.cache/yarn/v6/[email protected]/node_modules/@horizon/common" as pattern ["@horizon/common<strong i="12">@link</strong>:packages/renderer/.deps/@horizon/common"]. This could result in non-deterministic behavior, skipping.
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡