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"
}