web-dev-qa-db-fra.com

Paramétrer `GOPATH` pour chaque projet vscode

La définition de la variable GOPATH global en tant que variable d'environnement fonctionne correctement avec Visual Studio Code.

Mais définir une variable spécifique à un projet globalement ne me semble pas très gentil. Considérez que vous avez plusieurs projets Go, vous devrez modifier cette variable chaque fois que vous compilez, déboguez, etc., un projet.

Est-il possible de définir la variable GOPATH en tant que variable de projet dans Visual Studio Code? Ether dans settings.json ou launch.json?

8
Matthias

Go 1.5 a ajouté le répertoire des fournisseurs permettant une gestion des dépendances par projet.

S'il existe un répertoire source d/vendor, alors, lors de la compilation d'un fichier source dans le sous-arbre racine de la racine d, l'importation "p" est interprétée comme une importation "d/vendor/p" si ce chemin désigne un répertoire contenant au moins un fichier. avec un nom se terminant par “.go”.

la source

Cette fonctionnalité a été activée par défaut avec Go 1.6:

Go 1.5 a introduit la prise en charge expérimentale d'un répertoire «fournisseur» activé par une variable d'environnement. En Go 1.6, la fonctionnalité est maintenant activée par défaut. 

la source

Même avec la version 1.6, selon les outils que vous utilisez, vous devrez peut-être définir la variable d’environnement GO15VENDOREXPERIMENT sur 1 (export GO15VENDOREXPERIMENT=1 sur un système d’exploitation sous Unix).

2
n00dl3

(T2 2018: Notez qu'avec le projet vgo , GOPATH pourrait finir par être obsolète au profit d'un flux de travail basé sur un projet. Cela éviterait la GOPATH manuelle que je proposais ci-dessous, il y a deux ans. )

Avec Go 1.11 (août 2018), GOPATH peut être facultatif, avec modules .

Il est de plus en plus supporté avec VSCode:


En plus du dossier du fournisseur, vous pouvez toujours avoir une GOPATH par projet.

Voir " GOPATH from go.inferGopath setting ":

GOPATH from go.inferGopath setting

Le réglage de go.inferGopath remplace tout ce qui précède.
Si go.inferGopath est défini sur true, l'extension essaiera d'inférer la GOPATH à partir du chemin d'accès à l'espace de travail, c'est-à-dire le répertoire ouvert dans vscode. Il recherche le répertoire src dans le chemin d'accès et place GOPATH à un niveau supérieur.

Par exemple, si votre projet ressemble à /aaa/bbb/ccc/src/..., alors ouvrir le répertoire /aaa/bbb/ccc/src (ou tout ce qui se trouve en dessous) fera rechercher l'extension vers le haut, rechercher le composant src dans le chemin et définir la GOPATH à un niveau supérieur à celui-ci ___GOPATH=/aaa/bbb/ccc.

Ce paramètre est utile lorsque vous travaillez sur différents projets Go ayant différents GOPATHs. Au lieu de définir GOPATH dans les paramètres d'espace de travail de chaque projet ou de définir tous les chemins d'accès comme chaîne séparée par ;/:, vous pouvez simplement définir go.inferGopath sur true et l'extension utilise automatiquement la droite GOPATH

GOPATH pour l'installation des outils Go à l'aide de go.toolsGopath

Par défaut, tous les outils Go dépendants sont utilisés à partir de la GOPATH dérivée de la logique ci-dessus.
S'ils sont disponibles sur votre PATH, la PATH est utilisée pour localiser les outils Go.
Si les outils Go ne se trouvent pas sur votre chemin, vous pouvez vous retrouver avec les mêmes outils Go installés dans chacun de vos GOPATHs.
Pour éviter que les outils Go n'encombrent votre GOPATH, utilisez le paramètre go.toolsGopath pour fournir un emplacement séparé pour les outils Go.

La première fois que vous définissez go.toolsGopath, vous devrez exécuter la commande Go: Install Tools pour que les outils Go soient installés à l'emplacement fourni.

10
VonC

GOPATH est votre espace de travail et il est divisé en

GOPATH/
    |- bin/
    |- pkg/
    |- src/ <--- your projects are saved here
        |- .../my_project1
        |- .../my_project2

Avec cette séparation, vous n'avez pas besoin de définir un nouveau GOPATH pour chaque projet. Je vous recommande de lire Comment écrire un code Go

3
Motakjuq

set workspace settings, dans Windows:

  1. paramètres de goto: ctrl+,
  2. définir les paramètres de l'espace de travail:

    { 
         "go.gopath": "d:\\gopath;E:\\src"
    }
    

utiliser ; pour plusieurs chemins

  1. redémarrez le code de Visual Studio pour prendre effet.
0
hustljian