AskClean

Cómo vaciar la caché de Swift Package Manager sin riesgo

Equipo de AskClean · Actualizado 2026-11-02

Usa swift package clean para los artefactos de compilación de un proyecto, swift package reset para toda la caché y el directorio de compilación de ese paquete, y swift package purge-cache solo para la caché de repositorios que SwiftPM comparte entre proyectos. Conserva Package.swift y Package.resolved: definen las dependencias y no son caché desechable.

Grafo de dependencias de Swift con los paquetes activos protegidos, separados de capas duplicadas de caché
Elige la limpieza de SwiftPM más acotada: primero los artefactos de compilación del proyecto; las descargas compartidas, solo si son el problema.

SwiftPM tiene varias capas de caché

Un paquete de línea de comandos guarda checkouts, repositorios, productos de compilación y el estado del workspace en .build, y SwiftPM mantiene además una caché de repositorios compartida para no descargar las mismas dependencias en cada proyecto. Xcode suele asociar los checkouts y productos de los paquetes al DerivedData del proyecto. Limpia la capa más acotada que explique el síntoma: una limpieza de proyecto se recupera antes y no ralentiza otros repositorios.

Elige el comando por su alcance

swift package clean elimina los artefactos de compilación del paquete actual. swift package reset es más amplio: restablece toda la caché y el directorio de compilación del paquete, que tendrá que volver a preparar dependencias y estado. swift package purge-cache vacía la caché global de repositorios que comparten varios proyectos, así que la próxima resolución puede necesitar red y tardar más; no lo conviertas en un ritual antes de cada compilación.

  1. Haz commit o stash de tus cambios y comprueba que Package.swift y Package.resolved están donde el proyecto los espera.
  2. Desde la raíz del paquete, ejecuta swift package clean y repite la compilación que fallaba.
  3. Si el estado local del paquete sigue siendo incoherente, ejecuta swift package reset y vuelve a resolver y compilar.
  4. Ejecuta swift package purge-cache solo si la caché compartida es demasiado grande o está dañada.
  5. Verifica el grafo de dependencias y las pruebas antes de limpiar el DerivedData de Xcode.

Ejecuta swift package --help: los subcomandos disponibles dependen de la versión de Swift instalada.

Conserva Package.resolved salvo que quieras cambiar versiones

Package.resolved registra las versiones resueltas exactas. Borrarlo puede hacer que la próxima resolución elija otras versiones permitidas por Package.swift y convierta una limpieza en una actualización de dependencias. Package.swift, Sources, Tests, los plugins y las dependencias locales son código fuente: no los borres ni los edites como si fueran caché.

Trata Xcode por separado

Para un problema que solo aparece en Xcode, prueba File > Packages > Reset Package Caches y después Resolve Package Versions, o borra solo el DerivedData de ese proyecto. Antes de purgar nada global, anota el error original y mide los directorios .build: credenciales caducadas, hosts de Git caídos o manifiestos no válidos no se arreglan borrando descargas. AskClean ayuda a ver qué categoría ocupa espacio, pero los comandos de Swift siguen definiendo el alcance.

Resumen de decisiones y riesgos

Vacía la caché de Swift Package Manager (SPM) sin riesgo: cuándo usar swift package clean, reset o purge-cache y cómo mantener intacto Package.resolved.

DecisiónDónde revisarLímite de seguridad
SwiftPM tiene varias capas de caché.build / DerivedData / caché de repositoriosUn paquete de línea de comandos guarda checkouts, repositorios, productos de compilación y el estado del workspace en .build, y SwiftPM mantiene además una caché de repositorios compartida para no descargar las mismas dependencias en cada proyecto.
Elige el comando por su alcanceswift package clean / reset / purge-cacheswift package clean elimina los artefactos de compilación del paquete actual.
Conserva Package.resolved salvo que quieras cambiar versionesPackage.swift / Package.resolvedPackage.resolved registra las versiones resueltas exactas.
Trata Xcode por separadoFile > Packages / DerivedDataPara un problema que solo aparece en Xcode, prueba File > Packages > Reset Package Caches y después Resolve Package Versions, o borra solo el DerivedData de ese proyecto.

Preguntas frecuentes

¿Qué elimina swift package clean?

Los artefactos de compilación del paquete actual; no borra Package.swift ni cambia los requisitos de las dependencias. La próxima compilación los vuelve a crear.

¿reset y purge-cache son lo mismo?

No. reset afecta a la caché y al directorio de compilación del paquete actual; purge-cache vacía la caché global de repositorios de SwiftPM, lo que afecta a las próximas descargas de todos tus proyectos.

¿Debo borrar Package.resolved?

No en una limpieza normal: registra las versiones resueltas y borrarlo puede cambiar las que se elijan la próxima vez. Hazlo solo si buscas a propósito una nueva resolución.

Fuentes

Más guías sobre almacenamiento de desarrollo