Maison >développement back-end >Golang >Comment prendre en charge plusieurs modules Go Mod dans un seul référentiel

Comment prendre en charge plusieurs modules Go Mod dans un seul référentiel

藏色散人
藏色散人avant
2021-07-13 14:33:443451parcourir

Contexte

J'écris Go récemment. Il existe un projet avec plusieurs modules et les versions sont publiées. dans Together, pour que d'autres projets puissent utiliser ces modules, il est nécessaire de mettre en œuvre la sortie de plusieurs modules dans un seul entrepôt.

Structure de l'entrepôt

La structure de l'entrepôt est la suivante :

.├── README.md
├── a
│   ├── a.go
│   └── go.mod
└── b
    ├── b.go
    └── go.mod

a/go.mod est généré à l'aide la commande suivante :

go mod init github.com/robberphex/go-test-multi-module/a

Version release

Comme il s'agit d'un multi-module, différentes balises sont utilisées. Les noms de balises sont unifiés comme <模块名>/<版本号>.

Par exemple, les balises actuelles sont :

$ git tag
a/v1.0.0
b/v1.0.0
b/v1.0.1

Utilisation par l'utilisateur

Les utilisateurs doivent uniquement Vous devez exécuter la commande comme un module normal :

$ go get github.com/robberphex/go-test-multi-module/b
go: downloading github.com/robberphex/go-test-multi-module/b v1.0.1
go: downloading github.com/robberphex/go-test-multi-module v0.0.0-20210420014022-d2c7262e89eb
$ go get github.com/robberphex/go-test-multi-module/a
go: downloading github.com/robberphex/go-test-multi-module/a v1.0.0

Expérience de développement VSCode

Mais dans le cas de plusieurs modules Ensuite, utilisez VSCode pour ouvrir l'entrepôt (répertoire racine), VSCode signalera une erreur et la complétion automatique impliquant des packages tiers ne fonctionnera pas :


J'ai vérifié les informations en fonction des invites et j'ai découvert que golps ne prend désormais en charge que les entrepôts multi-modules à titre expérimental. Vous devez activer manuellement ce commutateur :

"gopls": {
    "build.experimentalWorkspaceModule": true}

De cette façon, les projets multi-modules peuvent être développés en douceur.

P.S. Il y a aussi un interrupteurui.completion.experimentalPostfixCompletions qui est également très utile. Vous pouvez l'activer et voir l'effet est le suivant :

Pour plus d'articles techniques liés au Golang, veuillez visiter golangColonne tutoriel !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer