2016-05-20 8 views
0

недавно я прочитал статью http://glide.readthedocs.io/en/latest/vendor/, есть некоторые рекомендации, одна из них:Должны ли мы всегда размещать наши собственные пакеты в вендоре/папке при разработке библиотеки golang?

библиотеки (базы коды без main пакета) не должен хранить вне пакетов в vendor/ папке в их VCS, если они не имеют конкретные разум и понять, почему они это делают.

мой вопрос:

в соответствии с этой рекомендацией, мы должны всегда размещать свои пакеты (не те пакеты сторонних) в vendor/ папке при разработке библиотеки golang?

ответ

1

«внешние пакеты» означает пакеты, которые живут за пределами этого репо. Итак, если пакеты находятся в отдельных репозиториях из кода, который их импортирует: Да, имейте это в продаже.

Если вы просто хотите написать и использовать несколько пакетов при реализации вашей библиотеки: Нет, поместите их в подпапки за пределами поставщика/в библиотеке репо

Например

... ▸ server/ server.go "package server" ▸ store/ ▸ testutils/ ▾ vendor/ ▸ bitbucket.org/ ▸ github.com/ ...

+1

хотя ваш ответ не является прямым ответом на мой вопрос, вы разъясняете, какие «внешние пакки» меня путают. благодаря! https://github.com/mattfarina/golang-broken-vendor заставляет меня понять, почему библиотека не должна размещать сторонние пакеты в каталоге 'vendor /'. – BruceAuyeung

+0

Как менеджер пакетов поставщика, такой как 'glide', управляет сторонними пакетами, когда мы помещаем их в структуру каталогов базы данных библиотеки при разработке библиотеки? – BruceAuyeung

+0

@BruceAuyeung Я использовал только 'godep', с помощью которого вы запускаете' go get foo/package1 bar/package2 ... 'для установки пакетов в ваш gopath, а затем запустите' godep restore && godep save./... ' для копирования пакетов с gopath на '/vendor /'. Я ожидаю, что с помощью скольжения вам также не придется вручную помещать что-либо в папку поставщика. – Plato

1

Нет, не имеет смысла добавлять свои собственные пакеты внутри каталога vendor /, потому что каталог поставщика предназначен для кода, внешнего по отношению к вашему проекту.

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