Zoeken…


Opmerkingen

Vendoring is een methode om ervoor te zorgen dat al uw pakketten van derden die u in uw Go-project gebruikt, consistent zijn voor iedereen die zich ontwikkelt voor uw toepassing.

Wanneer uw Go-pakket een ander pakket importeert, controleert de compiler normaal $GOPATH/src/ op het pad van het geïmporteerde project. Als uw pakket echter een map met de naam vendor , zal de compiler eerst die map inchecken. Dit betekent dat u pakketten van andere partijen in uw eigen coderepository kunt importeren, zonder dat u hun code hoeft te wijzigen.

Verkoop is een standaardfunctie in Go 1.6 en hoger. In Go 1.5 moet u de omgevingsvariabele GO15VENDOREXPERIMENT=1 om vendoring in te schakelen.

Gebruik govendor om externe pakketten toe te voegen

Govendor is een hulpmiddel dat wordt gebruikt om pakketten van derden in uw coderepository te importeren op een manier die compatibel is met de verkoop van golang.

Stel bijvoorbeeld dat u een pakket van derden gebruikt bosun.org/slog :

package main

import "bosun.org/slog"

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

Uw mapstructuur kan er als volgt uitzien:

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

Iemand die github.com/me/helloworld mogelijk geen $GOPATH/src/bosun.org/slog/ map, waardoor de build mislukt vanwege ontbrekende pakketten.

Als u de volgende opdracht uitvoert vanaf uw opdrachtprompt, worden alle externe pakketten uit uw Go-pakket gepakt en worden de vereiste bits in een map van een leverancier verpakt:

govendor add +e

Dit geeft govendor de opdracht om alle externe pakketten toe te voegen aan uw huidige repository.

De directorystructuur van uw applicatie ziet er nu uit als:

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

en degenen die uw repository klonen, zullen ook de vereiste pakketten van derden pakken.

Prullenbak gebruiken om ./vendor te beheren

trash is een minimalistisch verkoopprogramma dat u configureert met het bestand vendor.conf . Dit voorbeeld is voor de trash zelf:

# 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

De eerste regel zonder commentaar is het pakket waarvoor we ./vendor beheren (let op: dit kan letterlijk elk pakket in uw project zijn, niet alleen het hoofdpakket).

Opmerkingenregels beginnen met # .

Elke niet-lege en geen commentaarregel geeft een afhankelijkheid weer. Alleen het "root" -pakket van de afhankelijkheid moet worden vermeld.

Nadat de pakketnaam de versie is (commit, tag of branch) en optioneel de pakketrepository-URL (standaard wordt deze afgeleid uit de pakketnaam).

Om uw ./vendor-map te vullen, moet u het bestand vendor.conf in de huidige map hebben en gewoon uitvoeren:

$ trash

Prullenbak zal de gevende bibliotheken in ~/.trash-cache (standaard), de aangevraagde versies uitchecken, de bestanden naar ./vendor dir kopiëren en niet-geïmporteerde pakketten en testbestanden snoeien . Deze laatste stap houdt uw ./vendor slank en gemeen en helpt ruimte te besparen in uw projectrepository.

Opmerking: vanaf v0.2.5 is prullenbak beschikbaar voor Linux en macOS, en ondersteunt alleen git om pakketten op te halen, aangezien git de meest populaire is, maar we werken aan het toevoegen van alle andere die ondersteuning go get .

Gebruik golang / dep

golang / dep is een prototype afhankelijkheidsbeheertool. Binnenkort een officiële versie-tool. Huidige status Alpha .

Gebruik

Download de tool via

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

Typisch gebruik op een nieuwe repo kan zijn

$ dep init
$ dep ensure -update

Als u een afhankelijkheid van een nieuwe versie wilt bijwerken, kunt u uitvoeren

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

Merk op dat de bestandsindelingen voor manifest en vergrendelen nu zijn voltooid . Deze blijven compatibel, zelfs als het gereedschap verandert.

vendor.json met behulp van Govendor tool

# 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

Voorbeeld 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow