Grow with AppMaster Grow with AppMaster.
Become our partner arrow ico

Modules Go et gestion des dépendances

Modules Go et gestion des dépendances

Introduction à la gestion des dépendances en Go

La gestion des dépendances est un aspect essentiel de tout projet logiciel, car elle permet de gérer les versions des bibliothèques et des paquets sur lesquels votre projet s'appuie. En Go (Golang), la gestion des dépendances garantit la reproductibilité et la maintenance de vos projets Go en facilitant la résolution des problèmes de version, en maintenant la compatibilité avec d'autres paquets et en rationalisant le processus de développement global.

Software development process

Avant Go Modules, la gestion des dépendances en Go était moins rationalisée. Les développeurs avaient souvent recours à des outils tels que dep, glide ou govendor pour gérer leurs dépendances. Bien que ces outils soient utiles, ils ne faisaient pas partie du projet Go officiel et, par conséquent, créaient des frictions dans l'adoption de Go comme langage pour certains développeurs.

L'ère des modules Go

En 2018, l'équipe Go a introduit le concept de "modules", une nouvelle norme pour la gestion des dépendances dans les projets Go. Les modules sont des collections de paquets liés qui sont versionnés ensemble, fournissant toutes les dépendances nécessaires à votre base de code. Avec l'introduction des modules Go dans Go 1.11, la gestion des dépendances est devenue plus simple, plus polyvalente et officiellement soutenue par le projet Go. Les modules Go ont introduit des fonctionnalités telles que

  • Versionnement des dépendances à l'aide du Semantic Versioning (SemVer)
  • Des commandes de gestion des dépendances simplifiées (par exemple, go get, go mod tidy)
  • la génération automatique d'un fichier manifeste(go.mod) contenant des informations détaillées sur les dépendances
  • Téléchargement automatique et mise en cache des dépendances requises

Avec les modules Go, vous n'êtes plus obligé de placer votre code dans le répertoire $GOPATH, ce qui était auparavant une contrainte dans le développement Go. Ce nouveau système permet une structure de projet plus flexible, facilitant le travail sur les projets Go lorsque l'on passe d'un dépôt à l'autre.

Configuration de votre projet de module Go

Les premiers pas avec les modules Go sont simples. Suivez les étapes ci-dessous pour configurer un nouveau projet Go Modules.

  1. Tout d'abord, assurez-vous d'avoir installé la version 1.11 ou ultérieure de Go sur votre système. Vous pouvez vérifier votre version de Go en lançant go version dans le terminal.
  2. Allez à l'endroit de votre choix et créez un nouveau dossier de projet avec un nom descriptif, par exemple, my-go-project.
  3. Naviguez vers le dossier nouvellement créé dans la ligne de commande.
  4. Initialisez un nouveau module Go en exécutant la commande go mod init, suivie du chemin du module. Par exemple, vous pouvez exécuter go mod init github.com/votre-nom-d'utilisateur/mon-projetgo si vous avez l'intention d'héberger le projet sur GitHub. Cette commande génère un nouveau fichier nommé go.mod dans le dossier de votre projet.

Le fichier go.mod est le cœur de votre projet Go Modules. Il contient des métadonnées sur le module, comme son nom, et liste toutes les dépendances dont il a besoin. Vous interagirez avec le fichier go.mod tout au long du cycle de vie de votre projet Go pour gérer vos dépendances. Maintenant que votre projet de module Go est configuré, vous êtes prêt à ajouter et à gérer des dépendances à l'aide du système de modules Go.

Gestion des dépendances dans les modules Go

Les modules Go fournissent une approche simple et efficace pour gérer les dépendances de votre projet. Ils vous permettent d'ajouter, de mettre à jour ou de supprimer des versions de dépendances spécifiques, vous aidant ainsi à garder le contrôle de votre projet et de ses interactions avec d'autres paquets. Cette section vous guidera dans le processus de gestion des dépendances au sein de votre projet Go Modules.

Ajouter une dépendance

Pour ajouter une nouvelle dépendance, il vous suffit d'importer le paquetage souhaité dans votre code Go. Par exemple, si vous voulez ajouter github.com/gorilla/mux à votre projet, importez-le comme ceci :

Try AppMaster today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free
import ("github.com/gorilla/mux" )

La prochaine fois que vous lancerez go build ou go test, Go téléchargera automatiquement le paquetage requis, mettra à jour les fichiers go.mod et go.sum, et configurera votre projet pour qu'il utilise le paquetage spécifié. Vous pouvez également utiliser la commande go get pour ajouter explicitement une nouvelle dépendance :

go get github.com/gorilla/mux

Cela permettra non seulement de récupérer le paquet, mais aussi de mettre à jour les fichiers go.mod et go.sum de votre projet.

Mise à jour d'une dépendance

Pour mettre à jour une dépendance spécifique vers une nouvelle version, utilisez la commande go get suivie du chemin d'importation du paquet et du numéro de version souhaité :

go get github.com/gorilla/[email protected]

Cette commande mettra à jour le fichier go.mod avec la nouvelle version du paquetage et téléchargera son code source. Notez que si le paquet mis à jour introduit des changements importants, vous devrez peut-être ajuster votre code en conséquence.

Suppression d'une dépendance

Pour supprimer une dépendance de votre projet, commencez par supprimer les instructions d'importation correspondantes de votre code source. Ensuite, lancez la commande go mod tidy pour nettoyer le fichier go.mod :

go mod tidy

Cette commande supprimera toutes les dépendances inutilisées du fichier go.mod et veillera à ce que votre projet reste propre et organisé.

Versionnement sémantique et modules Go

Le Semantic Versioning (SemVer) est un système de versionnement largement adopté qui attribue des numéros de version uniques aux versions de logiciels. Il utilise un format de numérotation en trois parties : Major.Minor.Patch (par exemple, 1.2.3). Dans SemVer :

  • Les changements de version majeurs indiquent des ruptures et nécessitent des ajustements manuels du code.
  • Les changements de version mineurs introduisent de nouvelles fonctionnalités tout en restant compatibles avec les versions antérieures.
  • Les changements de version correctifs comprennent des corrections de bogues et des améliorations mineures des performances, également rétrocompatibles.

Go Modules intègre le Semantic Versioning pour gérer les versions des dépendances, ce qui permet aux développeurs de gérer plus facilement les mises à jour, la rétrocompatibilité et les ruptures. Lorsque vous spécifiez les versions des dépendances avec Go Modules, vous pouvez utiliser des plages de versions ou des numéros de versions spécifiques. Par exemple : - Pour récupérer la dernière version stable d'un paquetage, utilisez le chemin d'importation du paquetage sans numéro de version : go get github.com/gorilla/mux. - Pour récupérer une version spécifique, ajoutez le numéro de version après le symbole @: go get github.com/gorilla/[email protected].- Pour récupérer la dernière mise à jour mineure ou corrective d'une version majeure spécifique, utilisez le symbole ^ (caret) : go get github.com/gorilla/mux@^v1.0.0.

Commandes courantes des modules Go et leur utilisation

Voici quelques unes des commandes les plus utilisées de Go Modules et leurs scénarios d'utilisation :

go mod init

go mod init initialise un nouveau projet Go Modules dans le répertoire courant. Il génère un fichier go.mod, qui contient des informations sur le module, ses dépendances et les contraintes de version.

go mod init exemple.com/myprojet

Remplacez example.com/myproject par le chemin de votre module.

go get

go get est une commande polyvalente utilisée pour ajouter, mettre à jour ou supprimer une dépendance. Fournissez le chemin d'importation du paquetage, éventuellement suivi d'un numéro de version ou d'un intervalle.

go get github.com/gorilla/[email protected]

Cette commande ajoute ou met à jour le paquet github.com/gorilla/mux à la version v1.8.0.

go mod tidy

go mod tidy supprime les dépendances inutilisées du fichier go.mod et le met à jour pour refléter les déclarations d'importation dans le code source de votre projet.

go mod tidy

Exécutez cette commande après avoir supprimé les déclarations d'importation des dépendances non désirées.

go mod graph

go mod graph affiche l'arbre des dépendances du projet, en montrant les dépendances directes et indirectes dans un format lisible. Cette commande peut être utile lors du débogage de problèmes de dépendances complexes.

Try AppMaster today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free
go mod graph

go mod verify

go mod verify vérifie l'intégrité des dépendances listées dans le fichier go.sum. Si la somme de contrôle d'une dépendance ne correspond pas à la valeur enregistrée, la commande signale une erreur.

go mod verify

Résoudre les conflits de dépendances

Les conflits de dépendances peuvent survenir lorsque votre projet dépend de plusieurs paquets avec des exigences de versions différentes pour les dépendances partagées. Les modules Go fournissent un mécanisme intégré pour gérer ces conflits en utilisant les directives replace et exclude dans le fichier go.mod.

La directive replace

La directive replace vous permet de changer la version d'un module ou de la faire correspondre à un chemin local. Cela peut être utile dans les situations où vous avez besoin de tester des versions spécifiques, des projets forkés, ou des changements locaux avant de s'engager dans un dépôt distant. Pour utiliser la directive replace, ajoutez la ligne suivante à votre fichier go.mod:

replace example.com/original/module v1.2.3 => example.com/new/module v1.4.0

Cela remplace exemple. com/original/module version v1.2.3 par exemple.com/nouveau/module version v1.4.0. Vous pouvez également remplacer un module par un chemin local :

replace example.com/original/module v1.2.3 => ../local/path/to/new/module

La directive Exclude

Vous pouvez utiliser la directive exclude pour empêcher que des versions spécifiques d'un module soient utilisées dans votre projet. Cette directive est utile lorsque vous savez qu'une version particulière présente des problèmes de compatibilité ou des failles de sécurité. Pour exclure une version de module, ajoutez la ligne suivante à votre fichier go.mod:

exclude example.com/target/module v1.2.3

N'oubliez pas de lancer go mod tidy après avoir appliqué ces changements pour mettre à jour le fichier go.sum et recalculer l'arbre des dépendances.

Modules Go privés et gestion des référentiels

Travailler avec des modules et des dépôts Go privés est similaire à travailler avec des modules et des dépôts publics, mais il y a quelques étapes supplémentaires pour assurer une authentification et une confidentialité correctes.

Configuration de GOPRIVATE

Pour empêcher la fuite des chemins d'importation vers des serveurs publics, configurez la variable d'environnement GOPRIVATE. Cette variable spécifie une liste de chemins d'importation séparés par des virgules pour les dépôts privés.

go env -w GOPRIVATE=exemple.com/private/path/*

Utilisation de jetons d'accès

Pour utiliser des dépôts privés, vous devez généralement vous authentifier auprès de votre service d'hébergement de code source, tel que GitHub ou GitLab. Créez un jeton d'accès personnel avec les permissions appropriées (telles que l'étendue du repo pour GitHub). Reportez-vous à la documentation de votre service d'hébergement pour connaître les étapes spécifiques à la création d'un jeton d'accès. Après avoir obtenu le jeton d'accès, configurez la variable d'environnement pour l'authentification. Utilisez la variable d'environnement appropriée en fonction de votre service VCS.

export GIT_TERMINAL_PROMPT=0 export GITHUB_TOKEN=Votre_jeton_d'accès

Cela permet à la commande go de télécharger et d'authentifier des dépôts privés en tant que modules Go. Si vous travaillez avec plusieurs services VCS, vous pouvez configurer des jetons d'accès individuels pour chacun d'entre eux en définissant des variables d'environnement distinctes.

Migration à partir des systèmes de gestion des dépendances précédents

Avant Go Modules, il existait différents systèmes de gestion des dépendances tels que Dep, glide, ou des solutions d'annuaire de fournisseurs personnalisées. Si vous utilisez encore ces systèmes, il est temps de migrer vers Go Modules pour rester à jour et profiter des avantages de la gestion moderne des dépendances de Golang. Pour migrer d'un ancien système de gestion des dépendances vers Go Modules, suivez les étapes suivantes :

  1. Créez une sauvegarde de votre projet original pour vous assurer que vous pouvez revenir à l'état précédent si nécessaire.
  2. Supprimez tous les fichiers de gestion des dépendances existants (par exemple, Gopkg.toml ou Gopkg.lock).
  3. Naviguez jusqu'à la racine de votre projet dans un terminal, et exécutez go mod init pour créer un nouveau fichier go.mod. Cela tentera également de convertir votre fichier de dépendances précédent, s'il est présent, en entrées Go Modules.
  4. Exécutez go mod tidy pour remplir le fichier go.mod avec les dépendances de votre ancien système. Cette commande permet de s'assurer que seuls les paquets nécessaires font partie de l'arbre des dépendances.
  5. À ce stade, il se peut que vous deviez apporter des modifications à votre fichier go.mod pour résoudre des conflits de dépendances ou pour appliquer des versions spécifiques. Utilisez les directives replace et exclude si nécessaire pour gérer ces problèmes.
  6. Vérifiez que votre projet se construit et passe les tests comme prévu.
Try AppMaster today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free

En suivant ces étapes, votre projet devrait maintenant fonctionner avec les modules Go, ce qui simplifiera la gestion des dépendances et rendra votre projet plus facile à maintenir à long terme. Tout problème persistant doit être résolu en ajustant le fichier go.mod ou en vérifiant les chemins d'importation pour s'assurer qu'ils suivent le bon format.

AppMaster: Accélérer le développement d'applications basées sur Golang

Incorporer les modules Go et les meilleures pratiques de gestion des dépendances dans votre flux de travail quotidien est essentiel pour assurer la maintenance et l'évolutivité d'un projet logiciel basé sur Golang. Mais que se passerait-il si vous pouviez accélérer l'ensemble du processus de développement d'applications tout en continuant à tirer parti de la puissance de Golang ?

AppMaster.io est une plateforme complète sans code qui met l'accent sur la génération d'applications backend basées sur Golang à l'aide d'un environnement de développement visuel. Outre les applications dorsales, AppMaster permet de créer des applications web et mobiles à l'aide d'une approche intégrée conçue pour rationaliser le processus de développement.

Avec AppMaster, les utilisateurs peuvent créer des modèles de données (schéma de base de données), concevoir des processus d'entreprise et définir des API REST et des WebSocket endpoints à l'aide d'une interface utilisateur visuelle. Les applications web sont créées à l'aide d'une interface "glisser-déposer" et d'un concepteur de processus d'entreprise web pour une expérience utilisateur entièrement interactive. Les applications mobiles sont conçues de la même manière, avec un concepteur de processus d'affaires mobiles et une capacité de conception d'interface utilisateur.

AppMasterLa plateforme d'EMC prend vos plans et génère le code source de vos applications une fois que vous avez appuyé sur le bouton "Publier". Elle compile les applications, exécute des tests, les emballe dans des conteneurs Docker (pour les applications dorsales) et déploie le tout dans le nuage, le tout en quelques secondes.

Les applications dorsales sont générées à l'aide de Golang (Go), bénéficiant ainsi des performances, de la simplicité et de la facilité de maintenance qu'offre Golang. Les applications web sont générées à l'aide du framework Vue3 et de JavaScript/TypeScript, tandis que les applications mobiles utilisent le framework orienté serveur AppMaster, Kotlin et Jetpack Compose pour Android, et SwiftUI pour les applications iOS.

Grâce à la puissante plateforme AppMaster, même ceux qui n'ont pas d'expérience en matière de codage peuvent créer une solution logicielle complète et évolutive qui englobe des serveurs, des sites web, des portails clients et des applications mobiles natives. AppMaster accélère non seulement l'ensemble du processus de développement logiciel, mais élimine aussi complètement la dette technique en générant des applications à partir de zéro à chaque fois que les exigences sont modifiées.

Si vous envisagez d'adopter une plateforme no-code pour vos besoins en développement logiciel, en particulier une plateforme qui exploite les avantages de Golang, AppMaster devrait figurer en tête de votre liste. Créez un compte gratuit et explorez l'avenir du développement d'applications avec une solution 10 fois plus rapide et 3 fois plus rentable.

Quelles sont les commandes courantes des modules Go et leur utilisation ?

Les commandes courantes des modules Go incluent :
  • go mod init - initialise un nouveau projet Go Modules
  • go get - ajouter, mettre à jour ou supprimer une dépendance
  • go mod tidy - supprime les dépendances inutilisées
  • go mod graph - affiche l'arborescence des dépendances
  • go mod verify - vérifie l'arborescence des dépendances pour les problèmes

Qu'est-ce que la version sémantique et son rôle dans les modules Go ?

Le versionnage sémantique (SemVer) est un système de versionnage utilisant un format de numérotation en trois parties : Major.Minor.Patch (par exemple, 1.2.3). Il aide les développeurs à communiquer les modifications apportées à leur logiciel. Go Modules intègre SemVer pour les dépendances de version, ce qui facilite la gestion des mises à jour, la rétrocompatibilité et les changements avec rupture.

Comment migrer d'un ancien système de gestion des dépendances vers Go Modules ?

Pour migrer depuis Dep, glide ou un autre système de gestion des dépendances, sauvegardez d'abord votre projet d'origine. Ensuite, lancez go mod init pour créer un nouveau fichier go.mod . Ensuite, utilisez go mod tidy pour remplir le fichier go.mod avec les dépendances de votre système précédent et effectuez les ajustements nécessaires.

Comment résoudre les conflits de dépendance dans les modules Go ?

Les conflits de dépendance peuvent être résolus à l'aide des directives replace ou exclude dans le fichier go.mod . La directive replace vous permet de remplacer une dépendance par une autre version ou un chemin local, tandis que la directive exclude empêche l'utilisation de versions spécifiques dans votre projet.

Que sont les modules Go et pourquoi la gestion des dépendances est-elle importante en Go ?

Go Modules est un système officiel de gestion des dépendances pour les projets Go (Golang). Il vous aide à gérer facilement les dépendances du projet, garantissant que vos projets Go sont reproductibles et maintenables. La gestion des dépendances est cruciale pour résoudre les problèmes de version, assurer la compatibilité avec d'autres packages et rationaliser le processus de développement.

Comment ajouter, mettre à jour ou supprimer des dépendances dans les modules Go ?

Pour ajouter ou mettre à jour une dépendance, utilisez la commande go get suivie du chemin d'importation et du numéro de version du package. Pour supprimer une dépendance, supprimez l'instruction d'importation correspondante dans votre code source et exécutez go mod tidy pour nettoyer les dépendances inutilisées du fichier go.mod .

Comment puis-je utiliser des modules Go privés et gérer des référentiels ?

Pour utiliser des modules Go privés, configurez votre environnement avec go env -w GOPRIVATE , suivi d'une liste séparée par des virgules des modèles de spécification de chemin des modules privés. Utilisez une configuration Git ou un jeton d'accès pour vous authentifier auprès de référentiels privés et gérez vos dépendances comme n'importe quel autre projet Go Modules.

Comment AppMaster.io peut-il accélérer le développement d'applications basées sur Golang ?

AppMaster.io est une plate-forme no-code qui génère des applications backend basées sur Golang. L'utilisation AppMaster peut considérablement accélérer le développement d'applications, car elle permet aux utilisateurs de concevoir visuellement des modèles de données, des processus métier et endpoints d'API, en générant le code source de l'application et en offrant des avantages complets d'évolutivité et de maintenabilité.

Comment créer un nouveau projet de module Go ?

Créez un nouveau dossier de projet, accédez-y via la ligne de commande, puis utilisez la commande go mod init suivie du chemin du module. Il génère un fichier go.mod , indiquant que le dossier est un projet Go Modules. Modifiez le fichier pour gérer vos dépendances.

Postes connexes

Comment les plateformes de télémédecine peuvent augmenter les revenus de votre cabinet
Comment les plateformes de télémédecine peuvent augmenter les revenus de votre cabinet
Découvrez comment les plateformes de télémédecine peuvent augmenter les revenus de votre cabinet en offrant un meilleur accès aux patients, en réduisant les coûts opérationnels et en améliorant les soins.
Le rôle d'un LMS dans l'éducation en ligne : transformer l'apprentissage en ligne
Le rôle d'un LMS dans l'éducation en ligne : transformer l'apprentissage en ligne
Découvrez comment les systèmes de gestion de l’apprentissage (LMS) transforment l’éducation en ligne en améliorant l’accessibilité, l’engagement et l’efficacité pédagogique.
Principales caractéristiques à prendre en compte lors du choix d'une plateforme de télémédecine
Principales caractéristiques à prendre en compte lors du choix d'une plateforme de télémédecine
Découvrez les fonctionnalités essentielles des plateformes de télémédecine, de la sécurité à l'intégration, garantissant une prestation de soins de santé à distance transparente et efficace.
Commencez gratuitement
Inspiré pour essayer cela vous-même?

La meilleure façon de comprendre la puissance d'AppMaster est de le constater par vous-même. Créez votre propre application en quelques minutes avec un abonnement gratuit

Donnez vie à vos idées