Recherche…


Remarques

Le service de vente est une méthode qui garantit que tous les packages tiers que vous utilisez dans votre projet Go sont cohérents pour tous ceux qui développent pour votre application.

Lorsque votre package Go importe un autre package, le compilateur vérifie normalement $GOPATH/src/ pour le chemin du projet importé. Toutefois , si votre paquet contient un dossier nommé vendor , le compilateur vérifiera dans ce dossier en premier. Cela signifie que vous pouvez importer des paquets d'autres parties dans votre propre référentiel de codes, sans avoir à modifier leur code.

Vendoring est une fonctionnalité standard de Go 1.6 et versions ultérieures. Dans Go 1.5, vous devez définir la variable d'environnement GO15VENDOREXPERIMENT=1 pour permettre la vente.

Utiliser govendor pour ajouter des packages externes

Govendor est un outil utilisé pour importer des packages tiers dans votre référentiel de code d'une manière compatible avec la vente de golang.

Dites par exemple que vous utilisez un package tiers bosun.org/slog :

package main

import "bosun.org/slog"

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

Votre structure de répertoire peut ressembler à:

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

Cependant, une personne qui clone github.com/me/helloworld peut ne pas avoir $GOPATH/src/bosun.org/slog/ , ce qui provoque l'échec de leur compilation en raison de paquets manquants.

L'exécution de la commande suivante à l'invite de commandes permet de récupérer tous les packages externes de votre package Go et de regrouper les bits requis dans un dossier fournisseur:

govendor add +e

Cela demande à govendor d'ajouter tous les packages externes dans votre référentiel actuel.

La structure des répertoires de votre application ressemblerait maintenant à:

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

et ceux qui clonent votre dépôt vont également récupérer les paquets tiers requis.

Utiliser la corbeille pour gérer ./vendor

trash est un outil de vente minimaliste que vous configurez avec le fichier vendor.conf . Cet exemple est pour la trash elle-même:

# 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 première ligne sans commentaire est le package que nous gérons ./vendor pour (note: cela peut être littéralement n'importe quel paquet dans votre projet, pas seulement le paquet racine).

Les lignes commentées commencent par # .

Chaque ligne non vide et sans commentaire répertorie une dépendance. Seul le package "root" de la dépendance doit être répertorié.

Après le nom du package va la version (commit, tag ou branche) et éventuellement l'URL du référentiel de package (par défaut, il est déduit du nom du package).

Pour remplir votre répertoire ./vendor, vous devez avoir le fichier vendor.conf dans le répertoire en cours et exécuter simplement:

$ trash

La corbeille va cloner les bibliothèques vendues dans ~/.trash-cache (par défaut), extraire les versions demandées, copier les fichiers dans ./vendor dir et élaguer les paquets et les fichiers de test non importés . Cette dernière étape permet de maintenir votre budget ./vendor à un niveau raisonnable et de gagner de la place dans votre dépôt de projet.

Note: comme des ordures v0.2.5 est disponible pour Linux et Mac OS, et ne supporte que git pour récupérer les paquets, comme git est le plus populaire, mais nous travaillons sur l' ajout de tous les autres qui go get soutien.

Utilisez golang / dep

golang / dep est un outil prototype de gestion des dépendances. Bientôt un outil de versioning officiel. État actuel Alpha .

Usage

Obtenez l'outil via

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

L'utilisation typique sur un nouveau repo pourrait être

$ dep init
$ dep ensure -update

Pour mettre à jour une dépendance vers une nouvelle version, vous pouvez exécuter

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

Notez que les formats de fichier manifeste et verrou ont maintenant été finalisés . Ceux-ci resteront compatibles même si l'outil change.

vendor.json utilisant l'outil 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

Exemple 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow