2017-02-20 13 views
0

Я начинаю новый проект и рассматривает gb как мой инструмент для сборки, но не по всей видимости, интеграции очень хорошо с vscode ...Использование локальных пакетов с гб

Я ссылочные зависимости 3-й партии нет проблема с использованием gb vendor fetch, но что касается создания локальных пакетов, это оказывается немного сложнее! Мне что-то не хватает?

Вот мой локальный каталог ЦСИ:

src 
    /cmd 
     /model 
      calc.go 
     /server 
      server.go 

Следующий код компилирует и создает bin\server.exe файл успешно, но путь импорта не забирается, и не gocode признать его

Вот код сервера :

package main 

import (
    "cmd/model" // not a happy reference... 
    "fmt" 
) 

func main() { 
    fmt.Println(model.Add(1, 2)) 
} 

Вот код модели:

package model 

func Add(a int, b int) int { 
    return a + b 
} 

Я обнаружил, что, как представляется, подобная проблема на Github (https://github.com/joefitzgerald/go-plus/issues/325) и в то время как решение ННФА перебирает автозаполнения (после импорта), то оператор импорта сам по-прежнему утверждает, что поиск в GOROOT и GOPATHs ,

Любые идеи?

ответ

1

Благодаря ответу от lukehoban здесь https://github.com/Microsoft/vscode-go/issues/249 Я смог заставить свою среду работать.

Я просто создал файл settings.json в директории .vscode (который теперь должны быть проверены в), в который я настроил:

{ 
    "go.gopath": "${workspaceRoot}" 
} 

Это заставляет меня чувствовать себя нечистым и еще не дает возможности ссылаться как на зависимые стороны третьей стороны, так и на локальные пакеты вместе ...

0

Не пытайтесь работать против Go, работайте с Go.

Прежде всего дайте всем вашим пакетам полностью соответствующие пути импорта. Go разработан вокруг глобальных путей импорта, не пытайтесь заставить Go использовать плоские иерархии или даже относительные пути.

Вы можете указать конечные точки репозитория пути импорта напрямую или с помощью механизма Go remote import path. Кстати, если вы запускаете самообслуживаемый экземпляр GitLab, он поддерживает метатеги удаленных метаданных импорта.

Я предпочитаю glide, но, возможно, с gb возможно также следующее. Конечно, с предстоящим go dep можно будет что-то подобное: вы можете указать на конечные точки ssh + git и другие, используя glide's repo stanza. Честно говоря, я понятия не имею, поддерживает ли gb эквивалентный механизм, но если это не так, это хорошая причина для пересмотра.

+0

GB рассматривает каждый проект как свой собственный GOPATH, так что это не то, что я обычно делаю! Я закончил реализацию говендора, который работает красиво. Я тоже нахожусь для депо, что-то официальное станет хорошим изменением для множества доступных на данный момент решений ... – Rob