Elixir es un lenguaje poderoso y flexible, ideal para crear librerías reutilizables. En esta guía, aprenderás cómo iniciar y publicar tu propia librería.
1. Inicializando el Proyecto
Para empezar, crea un nuevo proyecto con mix:
mix new mi_libreria --module MiLibreria
Esto generará una estructura básica con carpetas como `lib` (para el código) y `mix.exs` (configuración del proyecto).
En el archivo `mix.exs`, ajusta la metadata básica, como nombre y descripción, para que sea más descriptiva:
def project do
[
app: :mi_libreria,
version: "0.1.0",
elixir: "~> 1.15",
description: "Una librería simple para manipular cadenas",
start_permanent: Mix.env() == :prod
]
end
2. Implementando la Funcionalidad
Agregamos lógica en lib/mi_libreria.ex. Por ejemplo, una función para convertir cadenas a mayúsculas:
defmodule MiLibreria do
@moduledoc """
MiLibreria es una colección de funciones útiles para cadenas.
"""
@doc """
Convierte una cadena en mayúsculas.
## Ejemplo
iex> MiLibreria.convertir_mayusculas("hola")
"HOLA"
"""
def convertir_mayusculas(cadena) when is_binary(cadena) do
String.upcase(cadena)
end
end
La documentación (`@moduledoc` y `@doc`) ayuda a otros desarrolladores a entender y usar tu librería.
3. Generando Documentación con ExDoc
Añade `ExDoc` al archivo `mix.exs` para generar documentación en HTML:
{:ex_doc, "~> 0.29", only: :dev, runtime: false}
Instala las dependencias:
mix deps.get
Genera la documentación:
mix docs
Esto crea una carpeta `doc` con una versión navegable de tu documentación.
4. Publicando en Hex
Crea una cuenta en Hex.pm:
Tenemos que registrarnos en Hex.pm y genera una clave de autenticación con:
mix hex.user register
Completa la Metadata en mix.exs:
def project do
[
app: :mi_libreria,
version: "0.1.0",
description: "Librería para manipulación de cadenas",
package: package_info()
]
end
defp package_info do
[
maintainers: ["Tu Nombre"],
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/tu_usuario/mi_libreria"}
]
end
Publica la librería:
mix hex.publish
Crear una librería en Elixir es sencillo y gratificante. Con estas herramientas y pasos, puedes compartir tu trabajo con la comunidad y contribuir al crecimiento del ecosistema.