🛠️

Swift Packageのキャッシュを根こそぎ削除する

2024/05/30に公開

Swift Package Managerを用いてライブラリを導入/管理するのは非常に簡単で開発における強力な武器ですが、時折開発生産性を下げるような躓きに遭遇します。

例えば、複数branchで並列開発をしておりAのbranchのライブラリ依存状態とBのbranchのライブラリ依存状態が異なっていると、branchを切り替えるたびにXcodeの調子が悪くなったり、果てはクラッシュしてしまったりしますよね。

また、外部のPackageをバージョン指定ではなくbranch指定にしていると、そのbranchに更新があっても最新の状況をpullしてこれないといったケースもあると思います。

これらはだいたいSwift Packageのキャッシュが原因です。なので、キャッシュを根こそぎ削除して綺麗な状態にしてやりましょう!

削除するもの

  1. ~/Library/Caches/org.swift.swiftpmにある該当Packageの情報
  2. ~/Library/org.swift.swiftpmにある該当Packageの情報
  3. ~/Library/org.swift.swiftpm.lockにある該当Packageの情報(あれば)
  4. ~/Library/Developer/Xcode/DerivedDataにある開発中Projectディレクトリ内のSourcePackages
  5. ローカルPackage内の.swiftpm
  6. Projectのルート配下の全ての*/Package.resolved

1,2,3に関しては指定されたパスをVSCodeなどで開いて、該当Package名で全体検索して引っかかったファイルやディレクトリを丸ごと消しちゃいましょう!複数ある場合も全部です。

4に関しては、すでにProjectをXcodeで開いている場合は、メニューバーのProduct -> Show Build Folder in Finderを開くと見つけるのが早いです。

5,6に関してはTerminalで探して消すと早いです。

find . -name Package.resolved | xargs rm -rf
find . -name .swiftpm | xargs rm -rf

基本的には1~6までXcodeは閉じた状態で行った方が良いです。また、キャッシュを全て消した後はXcodeを再起動しないとその状態が反映されません。

Discussion