El ecosistema de paquetes de Gleam usa Hex, el mismo gestor que comparten Elixir y Erlang. Eso significa que desde el primer dÃa tienes acceso a miles de librerÃas del ecosistema BEAM, aunque no todas tienen soporte nativo para Gleam (algunas requieren el interop con @external que vimos en artÃculos anteriores de la serie).
En este artÃculo vemos cómo funciona el sistema de paquetes de Gleam, qué librerÃas tienen soporte nativo en 2026 y cómo gestionar las dependencias de un proyecto real.
gleam.toml: la configuración del proyecto
El fichero gleam.toml es el equivalente del package.json de Node o el Cargo.toml de Rust. Define el nombre del proyecto, la versión, el target y las dependencias:
name = "mi_proyecto" version = "1.0.0" target = "erlang" # o "javascript" [dependencies] gleam_stdlib = ">= 0.34.0 and < 1.0.0" wisp = ">= 0.16.0" mist = ">= 1.2.0" gleam_json = ">= 1.0.0" gleam_http = ">= 3.6.0" gleam_otp = ">= 0.10.0" [dev-dependencies] gleeunit = ">= 1.0.0"
Las dependencias de desarrollo (como el framework de testing) van en [dev-dependencies] y no se incluyen en el build de producción.
Añadir paquetes desde la lÃnea de comandos
# Añadir una dependencia gleam add wisp # Añadir como dependencia de desarrollo gleam add --dev gleeunit # Actualizar dependencias gleam update # Ver el árbol de dependencias gleam deps list
Al ejecutar gleam add nombre, el CLI busca el paquete en Hex, lo descarga, actualiza gleam.toml y genera el fichero manifest.toml con las versiones exactas de todas las dependencias (el equivalente del package-lock.json).
Las librerÃas más usadas en 2026
gleam_stdlib
La librerÃa estándar. Viene incluida en todos los proyectos. Cubre los módulos esenciales: gleam/list, gleam/string, gleam/result, gleam/option, gleam/dict, gleam/set, gleam/int, gleam/float, gleam/io, gleam/bool.
gleam_http y gleam_json
Para trabajo web. gleam_http define los tipos HTTP (Request, Response, Method, Header) que usan Wisp y otros frameworks. gleam_json permite serializar y deserializar JSON con el sistema de tipos de Gleam:
import gleam/json
type Point {
Point(x: Float, y: Float)
}
fn encode_point(p: Point) -> String {
json.to_string(json.object([
#("x", json.float(p.x)),
#("y", json.float(p.y)),
]))
}
gleam_otp
Wrappers tipados sobre OTP: actores, supervisores, tasks. Imprescindible para código concurrente en el target Erlang. Ya lo vimos en el artÃculo sobre concurrencia en Gleam.
wisp y mist
El stack web principal de Gleam. Wisp es el framework HTTP de alto nivel y Mist el servidor subyacente. Los vimos en profundidad en el artÃculo sobre servidores HTTP con Wisp.
gleam_crypto
Wrappers tipados sobre el módulo crypto de Erlang para operaciones criptográficas: hashes, HMAC, bytes aleatorios:
import gleam/crypto
let hash = crypto.hash(crypto.Sha256, bit_array.from_string("texto"))
birl
LibrerÃa para trabajo con fechas y tiempos en Gleam. Más ergonómica que usar el módulo calendar de Erlang directamente:
import birl let now = birl.now() let formatted = birl.to_iso8601(now)
gleam_pgo
Cliente PostgreSQL para Gleam. Usa el driver pgo de Erlang por debajo, con una interfaz tipada:
import gleam/pgo
let db = pgo.connect(pgo.Config(
..pgo.default_config(),
host: "localhost",
database: "mi_db",
))
let result = pgo.query("SELECT id, name FROM users WHERE id = $1", [pgo.int(1)], db)
lustre
El framework de UI para el target JavaScript. Sigue el modelo Elm con Model-View-Update y tipos seguros para el DOM.
Buscar paquetes
El sitio oficial para buscar paquetes de Gleam es packages.gleam.run, que filtra especÃficamente los paquetes de Hex con soporte para Gleam. También puedes buscar en hex.pm el total de paquetes del ecosistema BEAM (Erlang + Elixir + Gleam), aunque allà no todos tienen tipos Gleam.
Publicar un paquete propio
# Autenticarse en Hex (solo la primera vez) gleam hex authenticate # Publicar gleam publish
Gleam genera la documentación automáticamente con gleam docs build y la publica en hexdocs.pm junto con el paquete. La documentación incluye los tipos de todas las funciones públicas, lo que facilita mucho el descubrimiento de la API.
El modelo de versiones
Gleam usa semver y el resolver de versiones de Hex. El formato >= 1.0.0 and < 2.0.0 en gleam.toml es el patrón habitual para permitir actualizaciones menores pero no breaking changes. El fichero manifest.toml fija las versiones exactas para que el build sea reproducible.
Para los tests con gleeunit, el último artÃculo de la serie cubre en detalle cómo escribir tests en Gleam.
Imagen: Pexels / Daniil Komov
