Ecosistema de paquetes en Gleam: Hex, gleam.toml y las librerías más útiles en 2026

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

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP