Dep, le gestionnaire de paquet pour Golang

Adieu go get

Dep est le gestionnaire de paquet officiel de Golang. Au même titre que NPM pour Node.js, PIP pour Python, Composer pour PHP, etc… Fini donc les go get à tire-larigot, place à un manifeste et un dossier contenant toutes les dépendances externes !

Installation

Pour installer Dep sur Windows, rendez-vous sur la page des releases du projet https://github.com/golang/dep/releases.
Téléchargez la version appropriée (dep-windows-amd64.exe pour votre Windows 64 bits).
Une fois l’exécutable téléchargé, placez-le dans le dossier dédié C:/Go/Bin et renommez le fichier en dep.exe.
Ajoutez l’exécutable de Dep comme variable d’environnement avec la commande suivante set DEP=C:/Go/bin.
La commande dep est desormais accessible depuis n’importe quel endroit.

dep cli v0.50
dep cli v0.50

Pour les autres systèmes d’exploitation : https://golang.github.io/dep/docs/installation.html

Téléchargement d'un package

Dans votre dossier %GOPATH% (C:/gopath par défaut), créez un nouveau projet.

cd %gopath% && cd src && mkdir test && cd test

Puis lancez la commande d’initialisation dep init. A la suite de cette commande, 2 fichiers et 1 dossier ont été créé.

  • Gopkg.lock
  • Gopkg.toml
  • Vendor

Ajoutons un package à notre projet pour tester avec la commande dep ensure -add github.com/gin-gonic/gin.
Oups, on a l’erreur suivante "no dirs contained any Go code". Créez le fichier main.go et relancez la commande.
Oups, une autre erreur "all dirs contained build errors". Editez le fichier main.go.

package main

func main() {
}

Puis relancez la commande.

Fetching sources...

"github.com/gin-gonic/gin" is not imported by your project, and has been temporarily added to Gopkg.lock and vendor/.
If you run "dep ensure" again before actually importing it, it will disappear from Gopkg.lock and vendor/.

Dep nous informe que le package n’est pas utilisé dans notre fichier main.go.

Ouvrez le fichier Gopkg.toml. Une nouvelle ligne est apparue. :)

[[constraint]]
  name = "github.com/gin-gonic/gin"
  version = "1.3.0"

Modifiez le fichier main.go (pas besoin de l’exécuter, la ligne la plus importante est la 3).

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // http:localhost:8080
}

Puis lancez la commande dep status.

dep status
dep status

On retrouve ces dépendances dans le fichier Gopkg.lock.

Si le fichier main.go est déjà présent, Dep se chargera de télécharger les packages présents dans import lors de la commande dep init.

Dep garde en cache les dépendances dans le dossier %gopath%/pkg/dep/sources.

Mettre à jour un package

Un package en particulier : dep ensure -update <nom_package>.
Tous les packages : dep ensure -update.

Supprimer un package

La suppression d’un package se fait directement dans votre code. Pour cela, supprimez l’appel le package utilisé directement dans votre fichier Go (la ligne import concernée) puis lancez la commande dep ensure. Par enchantement, le package ainsi que ses dépendances sont supprimés du dossier vendor.


Dep est assez semblable à NPM. Le fichier package.json correspond au fichier Gopkg.toml, le fichier package-lock.json au fichier Gopkg.lock et le dossier node_modules au dossier vendor. N’oubliez pas par la suite, d’exclure le dossier vendor dans votre fichier .gitignore avant de pousser avec Git votre projet. La personne qui voudra consulter votre code, n’aura qu’une seule commande à exécuter.

1 commentaire

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte