Cómo limpiar la caché de Swift Package Manager
Libranner Santos
03 mayo, 20232min de lectura
Cuando trabajamos con Swift Package Manager, es común que tengamos que limpiar la caché, porque Xcode no está refrescando los directorios con las últimas versiones de los archivos.
Esto ocurre muchas veces cuando nuestras dependencias son paquetes a los cuales apuntamos usando una rama de git, por ejemplo:
Agregando una dependencia en nuestro manifiesto usando:
.package(url: "https://repo-url.com",.branch("master"))
O directamente en un proyecto de Xcode:
Para resolver problemas relacionados a la caché tenemos dos opciones:
- Usar la opción Reset Package Caches de Xcode.
- Borrar toda la cache en nuestro equipo manualmente.
Opción cero
Antes de explicar las dos opciones mencionadas anteriormente, es bueno señalar la opción cero. Esta consiste en cerrar y abrir Xcode. Muchas veces, esto resuelve el problema, por lo que no está de más intentarlo.
Usar la opción Reset Packages Caches de Xcode
Esto se logra damos click derecho en Xcode y seleccionando la opción Reset Packages Caches:
Borrar toda la caché en nuestro equipo manualmente
Esto, por lo general funciona, pero no siempre. Cuando veamos que no resulta podemos usar el siguiente script:
rm -rf ~/Library/org.swift.swiftpmrm -rf ~/Library/Caches/org.swift.swiftpm
Estos dos directorios alojan datos de nuestros paquetes para ayudarnos a obtener versiones cacheadas y así agilizar el proceso de compilación. Sin embargo, si la versión cacheada no es la que necesitamos, podemos enfrentarnos a un caso donde Xcode nunca actualiza los archivos propiamente.
Es importante tomar en cuenta que correr estos scripts borra toda la data cacheada, así que si tenemos otros paquetes en otros proyectos que si funcionaban correctamente, puede que esto provoque que la próxima vez que abramos el proyecto sea un poco más lento, porque Swift Package Manager necesitará resolver las dependencias desde cero.
Una tercera opción
Una tercera solución, si la naturaleza del proyecto lo permite, es empezar a usar versionado en nuestros paquetes y establecer una estrategia donde generemos nuevas versiones frecuentemente. Ya esto va más relacionado a como decida trabajar el equipo.
Notas
Limpiar la caché también puede ayudarnos a resolver otros problemas relacionados con credenciales de seguridad que fallan sin ninguna razón aparente o conflictos en resolución de dependencias que no hacen sentido.