最初に結論だけ
各種 yarn コマンド実行時にキャッシュ置き場を指定。ライブラリの変更を反映したいときは rm -rf で直接そのディレクトリを削除してやる
# addやremoveのときに --cache-folderを指定しておく
yarn add --cache-folder ./ycache -D path/to/some-library/some-library.tgz
yarn remove --cache-folder ./ycache some-library
# 再度インストールしたいときは指定したキャッシュ置き場を消して、再度--cache-folderを指定して実行
rm -rf ./ycache
yarn add --cache-folder ./ycache -D path/to/some-library/some-library.tgz
起こった事象
- ライブラリのディレクトリで
yarn packを実行してtgzファイルを作成 - 試す側のディレクトリで
yarn add path/to/library/library.tgz - yarnのキャッシュによって古いものがインストールされる
-
yarn cache list --pattern libraryで確認するとたしかにキャッシュがあるので、yarn cache clean libraryでキャッシュを削除 - 改めて
yarn cache listで確認すると出てこないので消えてそう - 今一度
yarn add path/to/library/library.tgz - 何故か古いのがインストールされる
キャッシュ置き場指定以外に試したこと
yarn cache dir でキャッシュを保存してるディレクトリが取れるので、そこから該当ライブラリのキャッシュを直接指定して消したりはしたけどダメだった
tgz ファイルを消しても yarn add が成功するのでキャッシュに引っかかってるのは間違いないんだけど・・・