Buscar..


Observaciones

La venta es un método para asegurar que todos los paquetes de terceros que usa en su proyecto Go sean consistentes para todos los que desarrollan para su aplicación.

Cuando su paquete Go importa otro paquete, el compilador normalmente verifica $GOPATH/src/ para la ruta del proyecto importado. Sin embargo, si su paquete contiene una carpeta llamada vendor , el compilador registrará esa carpeta primero . Esto significa que puede importar paquetes de otras partes dentro de su propio repositorio de código, sin tener que modificar su código.

La venta es una característica estándar en Go 1.6 y superior. En Go 1.5, debe configurar la variable de entorno de GO15VENDOREXPERIMENT=1 para habilitar la venta.

Use govendor para agregar paquetes externos

Govendor es una herramienta que se utiliza para importar paquetes de terceros en su repositorio de código de una manera que sea compatible con la venta de Golang.

Digamos, por ejemplo, que está utilizando un paquete de terceros bosun.org/slog :

package main

import "bosun.org/slog"

func main() {
    slog.Infof("Hello World")
}

La estructura de su directorio puede verse como:

$GOPATH/src/
├── github.com/me/helloworld/
|   ├── hello.go 
├── bosun.org/slog/
|   ├── ... (slog files)

Sin embargo, es posible que alguien que github.com/me/helloworld no tenga una $GOPATH/src/bosun.org/slog/ , lo que hace que su compilación falle debido a que faltan paquetes.

Ejecutar el siguiente comando en su indicador de comando tomará todos los paquetes externos de su paquete de Go y empaquetará los bits necesarios en una carpeta de proveedor:

govendor add +e

Esto le indica a Govendor que agregue todos los paquetes externos a su repositorio actual.

La estructura del directorio de su aplicación ahora sería:

$GOPATH/src/
├── github.com/me/helloworld/
|   ├── vendor/
|   |   ├── bosun.org/slog/
|   |   |   ├── ... (slog files)
|   ├── hello.go 

y aquellos que clonen su repositorio también tomarán los paquetes de terceros requeridos.

Uso de basura para gestionar ./vendor

trash es una herramienta de venta minimalista que configura con el archivo vendor.conf . Este ejemplo es para la trash sí:

# package
github.com/rancher/trash

github.com/Sirupsen/logrus                      v0.10.0
github.com/urfave/cli                           v1.18.0
github.com/cloudfoundry-incubator/candiedyaml   99c3df8  https://github.com/imikushin/candiedyaml.git
github.com/stretchr/testify                     v1.1.3
github.com/davecgh/go-spew                      5215b55
github.com/pmezard/go-difflib                   792786c
golang.org/x/sys                                a408501

La primera línea sin comentarios es el paquete que administramos ./vendor (nota: esto puede ser literalmente cualquier paquete en su proyecto, no solo el raíz).

Las líneas comentadas comienzan con # .

Cada línea no vacía y sin comentarios enumera una dependencia. Solo el paquete "raíz" de la dependencia necesita ser listado.

Después de que el nombre del paquete va a la versión (confirmación, etiqueta o rama) y, opcionalmente, a la URL del repositorio de paquetes (de forma predeterminada, se deduce del nombre del paquete).

Para completar su directorio ./vendor, necesita tener el archivo vendor.conf en el directorio actual y simplemente ejecutar:

$ trash

Trash clonará las bibliotecas vendidas en ~/.trash-cache (por defecto), comprueba las versiones solicitadas, copia los archivos en ./vendor dir y ./vendor los paquetes no importados y los archivos de prueba . Este último paso mantiene su ./vendor lean y mean y ayuda a ahorrar espacio en su repositorio de proyecto.

Nota: a partir de v0.2.5, la papelera está disponible para Linux y macOS, y solo admite git para recuperar paquetes, ya que git es el más popular, pero estamos trabajando para agregar todos los demás que go get soporte.

Usar golang / dep

Golang / Dep es una herramienta de gestión de dependencias prototipo. Pronto será una herramienta oficial de versionamiento. Estado actual alfa .

Uso

Obtener la herramienta a través de

$ go get -u github.com/golang/dep/...

El uso típico en un nuevo repositorio podría ser

$ dep init
$ dep ensure -update

Para actualizar una dependencia a una nueva versión, puede ejecutar

$ dep ensure github.com/pkg/errors@^0.8.0

Tenga en cuenta que los formatos de archivo de manifiesto y bloqueo ya se han finalizado . Estos seguirán siendo compatibles incluso cuando la herramienta cambie.

vendor.json utilizando la herramienta Govendor

# It creates vendor folder and vendor.json inside it
govendor init

# Add dependencies in vendor.json
govendor fetch <dependency>

# Usage on new repository
# fetch depenencies in vendor.json
govendor sync

Ejemplo vendor.json

{

"comment": "",
"ignore": "test",
"package": [
    {
        "checksumSHA1": "kBeNcaKk56FguvPSUCEaH6AxpRc=",
        "path": "github.com/golang/protobuf/proto",
        "revision": "2bba0603135d7d7f5cb73b2125beeda19c09f4ef",
        "revisionTime": "2017-03-31T03:19:02Z"
    },
    {
        "checksumSHA1": "1DRAxdlWzS4U0xKN/yQ/fdNN7f0=",
        "path": "github.com/syndtr/goleveldb/leveldb/errors",
        "revision": "8c81ea47d4c41a385645e133e15510fc6a2a74b4",
        "revisionTime": "2017-04-09T01:48:31Z"
    }
],
"rootPath": "github.com/sample"

}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow