web-dev-qa-db-ja.com

Yarnにパッケージを再インストールさせるにはどうすればよいですか?

私のプロジェクトには依存関係があり、パッケージサーバーから取得したり、マシン上のローカルコピーから取得したりすることがあります。その結果、依存関係を探すYarnスイッチを頻繁に使用する必要があります。さらに、依存関係のローカルコピーを頻繁に変更するため、その変更をメインプロジェクトに反映させる必要があります。その結果、Yarnに依存関係の同じ場所を引き続き見るように指示する方法が必要ですが、バージョン番号が変更されていない場合でも、依存関係を再インストールし、キャッシュをスキップして現在のソースから直接取得します。 (時々、依存関係の小さな変更を試してみて、毎回バージョン番号を更新するとすぐに迷惑になります。)

どうすればいいですか?

私は以下を試しましたが、どれも機能しません:

yarn remove dependency
yarn add file:/dependency

依存関係の以前のバージョンを引き続き使用します。

yarn remove dependency
yarn cache clear
yarn add file:/dependency
yarn install --force

また、依存関係の以前のバージョンを引き続き使用します。

yarn remove dependency
rm -rf node_modules/
yarn cache clear
yarn add file:/dependency
yarn install --force

以前のバージョンの依存関係を引き続き使用します。

Yarnが依存関係の最新バージョンを使用していることを確認するにはどうすればよいですか?

31
Kevin

yarn linkコマンド を使用できます。これにより、ローカルの依存関係が設定されるため、依存関係を変更するたびに、それを更新するために他に何もすることなく、すぐにメインプロジェクトに表示されます。

メインプロジェクトが~/programming/mainにあり、依存関係が~/programming/dependencyにあり、名前がMyLocalDependencyである場合、以下を実行する必要があります。

1)依存関係内からyarn link(追加フラグなし)を実行します。

cd ~/programming/dependency
yarn link

2)メインプロジェクト内からyarn link <name of dependency package>を実行します。

cd ~/programming/main
yarn link MyLocalDependency

これで完了です!

依存関係のローカルコピーから他の場所でホストされているコピーに切り替える場合は、 yarn unlink を使用できます。

cd ~/programming/main
yarn unlink MyLocalDependency
cd ~/programming/dependency
yarn unlink

Yarnの代わりにNPMを使用している場合、npm linknpm link <dependency>は事実上同じように機能します。依存関係のリンクを解除するには、npm rm --global <dependency>を実行します。 (これはnpm linkがグローバルNPMパッケージセットにsimlinkを作成することで機能するため、グローバルパッケージからリンクされた依存関係をアンインストールするとリンクが切断されるためです。)

npm linkのドキュメント および npmリンクを使用してインストールされたパッケージをアンインストールする方法 を参照してください

20
Kevin

ノードモジュールを削除した後にパッケージを再インストールすると、次のように機能します。

yarn install --check-files

63
Karl Adler

もう1つの方法があります。 yarn upgrade package-nameを使用するだけです

マニュアルを参照してください: https://yarnpkg.com/lang/en/docs/cli/upgrade/

7
Sergey Okatov

Kevin self-answered のように、yarn linkは適切なオプションです。
しかし、リンクしているパッケージにpeer依存関係がある場合、いくつかの問題を引き起こす可能性があります。

カール・アドラーが言った も行く方法です:

yarn --check-files

ただし、これにより、変更されたすべてのパッケージが再インストールされます(サブコマンドなしのyarnyarn installと同じです)。

したがって、本当に1つのパッケージを再インストールするだけの場合:

yarn add package-name --force
3
seelts