Módulos de GO
En este apartado veremos los módulos de GO ya hace un tiempo que GOPATH esta siendo sustituido por esta nueva manera de gestionar las dependencias que componen nuestro proyecto. GOPATH aún es utilizable, pero se encuentra en desuso.
El uso de módulos es recomendado por el equipo de desarrollo de Go.
¿Qué son los módulos de Go?
Los módulos son una colección de paquetes almacenados en un árbol de archivos (file tree) que posee un archivo go.mod
En definitive nuestro Proyecto es un módulo el cual puede depender de otros módulos.
Si abrimos un archivo go.mod en cualquier editor de texto veremos las dependencias de nuestro proyecto
¿Qué más puedo ver en el archivo go.mod?
· Lista de dependencias:
Módulos de los que depende tu proyecto para funcionar.
· Versiones de las dependencias:
Versiones específicas de cada módulo que se utilizan.
· Dependencias transitivas:
Módulos de los que dependen las dependencias directas.
El archivo go.mod
Hay una cantidad de comandos que pueden ser utilizados que trabajan con el archivo go.mod
go mod init
En Go crear el archivo go.mod es simple, solo debes de correr el comando go mod init
para crearlo, este comando crea él go.mod inicial de nuestro proyecto.
go mod init
Hay otros comando que también pueden hacer modificaciones en go.mod, por ejemplo:
go mod tidy
El comando go mod tidy
limpiará las dependencias que no necesite el proyecto y agregara dependencias nuevas que hayamos agregado a este.
go mod tidy
go mod vendor
También, por otro lado, tenemos el comando go mod vendor
que, aunque se desaconseja su uso este sirve para las build del proyecto, ya que este crea una carpeta vendor con las dependencias.
En caso de no correr la build con la carpeta vendor el archivo .exe o de ejecución creado podía no funcionar correctamente.
A partir de go 1.18 ya no es necesario correr go mod vendor
la descarga de los módulos necesarios será automática por defecto. Cave destacar que esto depende plenamente de su conexión a internet
go mod vendor
otros comandos
Podemos verificar las dependencias de los módulos que usamos con go mod verify
Para agregar módulos a nuestro proyecto tenemos el comando go get
aunque este ha ido siendo remplazado por go install
, y, por tanto, si en alguna ocasión no puedes utilizar el módulo con go get
inténtalo con go install
.
Puedes ver más de comandos para los módulos en https://go.dev/ref/mod
Los módulos solo pueden ser usados siempre y cuando la variable de entorno predefinida GO111MODULE este en on
Si lo deseas puedes ver más sobre estas variables de entorno en: Variables de entorno predefinidas frecuentemente utilizadas en Go