Author Avatar

Binarizando un script de swift

Si usas Swift para crear pequeñas utilidades de línea de comandos, es probable que te hayas cansado de tener que recompilar y mover el binario a tu $PATH después de cada cambio.

Para scripts simples, recompilar continuamente rompe bastante el flujo de iteración.

Una forma habitual de evitar compilar es ejecutar directamente el script con el intérprete de Swift, por ejemplo, para una utilidad greetings:

Puedes ejecutarla sin build step directamente:

O crear un alias/manual wrapper:

~/.zshrc or ~/.bashrc

greeting() { }

Aunque esto funciona, tiene es algunas limitaciones:

Using npm as a lightweight package manager

Una alternativa más cómoda es tratar el script como un binario:

npm puede usarse para instalar scripts Swift (en realidad de cualquier otro lenguaje de programación) como comandos globales.

Este enfoque tiene varias ventajas:

Para nuestra utilidad greetings, basta con crear una estructura simple:

greeting/ ├── package.json └── main.swift

En donde package.json contiene:

{ }

La clave bin le dice a npm que exponga ese archivo como un ejecutable llamado greeting.

La clave name indica el nombre del paquete, útil si queremos desinstalar posteriormente la utilidad.

Shebangs

El script necesita tener un shebang válido para que el sistema sepa cómo ejecutarlo:

Y permisos de ejecución

Installing globally

Desde la carpeta del proyecto:

npm crea un symlink global hacia el script.

Ahora podemos ejecutarlo como cualquier otro comando:

Output:

Y desinstalamos con: