Swift Package Manager (SPM) fue el gestor de dependencias para Swift que Apple liberó junto a Swift en el año 2015. Swift Package Manager se unió a otros gestores de dependencias ya conocidos, como CocoaPods o Carthage. Sin embargo, no fue hasta la publicación de Xcode 11 que esta herramienta quedo integrada en el propio Xcode, lo que facilitó su uso. Ahora vamos a aprender a usar Swift Package Manager.

Un paquete Swift

Un paquete Swift está formando por una serie de archivos con el código fuente y una manifiesto, un archivo denominado Package.swift (que se encuentra en el directorio raíz), que define el nombre del paquete, su contenido, etc. Cuando compilamos estos archivos, generamos un módulo independiente que luego puede ser compartido (por ejemplo, desde GitHub) importado en otros proyectos. Estos archivos se compilan para formar un módulo que luego puede ser importado por otros proyectos.

Cómo podemos crear un paquete Swift

Con Xcode 11, es muy sencillo crear un paquete Swift. Para ello, en el menú de Xcode seleccionamos File > New > Swift Package

Creación de un nuevo paquete Swift en Xcode 11.

Luego indicamos el nombre que le vamos a dar al proyecto y lo creamos:

Asignación del nombre del proyecto.

De esta forma tan sencilla hemos generado un paquete Swift. Lo primero que vemos en la pantalla es el contenido del fichero Package.swift:

En este manifiesto encontramos:

  • name. Es el nombre del proyecto.
  • products. Define que ejecutable y librerásm definidas en el proyecto son visibles para otros paquetes.
  • dependencias. Aquí se definen otros paquetes de los que depende nuestro proyecto.
  • targets. Es donde añadimos las nuevas dependencias a nuestro proyecto principal.

Ejemplo de adición de dependencias

Por ejemplo, supongamos que queremeos crear un paquete Swift y sabemos que vamos a utilizar la librería RxSwift. Lo que hacemos primero es acceder al repositorio de GitHub de RxSwift. Si bajamos hasta el punto en que indica cómo se puede instalar, veremos que nos da las opciones de Cocoapods, Carthage y Swift Package Manager. Esta última es la que nos interesa y, en la cual observamos qué dependencia y qué target hemos de añadir a nuestro paquete Swift:

Por tanto, en nuestro Package.swift añadimos estos valores, con lo que queda de la siguiente manera:

El valor from: «5.0.0» nos indica a partir de qué versión de RxSwift se incluirá en nuestro proyecto. Es decir, se incluirá la versión más reciente de RxSwift que sea igual o superior a la 5.0.0. Sin embargo, también podemos indicar que solo se incluya una versión determinada, una rama o, incluso, una revisión:

Una vez añadido la dependencia a nuestro proyecto, al construirlo, veremos que en el menú de navegación lateral nos aparece una nueva sección (Swift Package Dependencies), en la que se nos indica las dependencias que hemos añadido a nuestro proyecto (en este caso, RxSwift).

Dependencias añadidas.

Ajustes de plataforma

En el fichero Package.swift, también podemos indicar para que plataforma o sistema operativo esta especificado nuestro proyecto. Por ejemplo, si queremos que nuestro paquete Swift solo se pueda utilizar para sistemas operaticos iOS 12+, lo que haremos será indicarlo de la siguiente forma:

Las diferente plataformas sopotadas, tal como se muestra en la documentación de Apple son:

  • iOS
  • linux
  • macOS
  • tvOS
  • watchOS

También podemos definir más de una plataforma. Por ejemplo:

Añadimos código a nuestro paquete Swift

Una vez tenemos configurado nuestro proyecto, ya podemos añadur código. Hay que recordar que habrá que declarar como públicas aquellas clases y métodos que queramos utilizar en lo proyectos en los que importemos paquete Swift. Una vez hemos concluido el proyecto y lo hemos subido a algún repositorio (como GitHub o GitLab), ya podemos descargarlo e incluirlo en otros proyectos.

Cómo añadir un paquete Swift a nuestra aplicación

Para añadir el paquete Swift que hemos creado a una aplicación, simplemente hemos de hacer lo siguiente (siempre y cuando estemos utilizando Xcode 11):

  • Desde del menú superior accedemos a File > Swift Packages > Add Package Dependency…
Añadir el paquete Swift a nuestra aplicación.
  • En la ventana que nos sale añadimos la URL del proyecto y pulsamos ok (de esta fomrma se descargara el paquete Swift a nuestro proyecto.):
Indicamos la URL del paquete Swift.
  • Allí donde queramos utilizarlo, simplemente deberemos importarlos:

Conclusiones

Con la incorporación de Swift Package Manager a Xcode 11, se ha vuelto muy sencilla tanto la creación como la incorporación de dependencias a nuestros proyectos. Esto abre una nueva forma de, por ejemplo, modular nuestra aplicaciones, pasando de aplicaciones monolíticas a aplicaciones compuestas por módulos, y a poder compartir código de una manera más sencilla entre nuestros proyectos.


1 comentario

Crea un FAB Button con Swift - Think In Swift · 17 abril 2020 a las 21:10

[…] en diferentes aplicaciones. Esto lo haremos mediante Swift Package Manager, que como ya vimos en un artículo anterior, es el gestor de dependencias de […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme en Feedly
shares