2017-09-24 3 views
-2

ここでは、https://github.com/kubernetes/apiserverのように.goファイルがpkgフォルダにコミットされていることがよくありますが、それは3rdparty依存関係のベンダーフォルダを使用するか、自分のコードをsrcディレクトリにコミットするのか?pkgフォルダに.goファイルを置く必要性を理解していますか?

+0

pkgディレクトリでコミットされた.goファイルはどこにありますか?それは一般的ではない、ちょうどkubernetesソース内のディレクトリ名である。 – JimB

+0

はい、私の質問の一部でした、kuberenetesチームがそのような名前を付ける特別な理由があるのだろうかと疑問に思っていました – abovesun

答えて

0

詳細をご確認ください。

  • あなたがリンクしたリポジトリのpkgフォルダは、作成したパッケージを置く場所です。理由?彼らはどこかに置く必要があります、彼らはpkgを選んだ。

  • vendorフォルダーを使用すると、使用しているサードパーティーパッケージに変更を加えたい場合、プログラムを不安定にする可能性があります。その場合、サードパーティーパッケージを「ベンダー」にします。明らかな理由から、あなた自身のパッケージをvendorフォルダに入れないでください。

  • どれがsrc$GOPATH/src?あなたはそれをすることができます!おそらく、私はそれをテストしていない。その場合は1つのプロジェクトしか作成できません。それはあなたがそこに配置したプロジェクトです。

+0

返信ありがとう、私はちょうど彼らがソースを保存するために '予約された'他のフォルダ名はここにあります。それに対する特別な理由は何ですか? – abovesun

+0

No.特にありません。そうです、他のフォルダ名を使用することもできますが、 "彼ら"はそのフォルダの名前をpkgにすることに決めました。たぶん、他の開発者の目に見慣れていると思ったため、フォルダは* .goファイルが見つかる場所です。しかし、これは一般的な方法ではありません。通常、開発者はプロジェクトのルートにすべてを残します。例えばlabstack/echoプロジェクトを参照してください。 – goofle

1

pkgフォルダの下に、あなたのプロジェクトのファイルを持っている必要はありません。プロジェクト内に最初にpkgというフォルダを持つ必要はありません。

pkg "予約済み"フォルダ名ではありません。少なくともプロジェクトのコンテキスト内ではありません。一方、Goコンパイラにとっては特別な意味を持ち、別のプロジェクトの一部として書かれたコードを保持するように意図されている。サードパーティのパッケージしたがって、リンクされたプロジェクトでは、pkgのコードをvendorに移動することは意味がありません。

kubernetesや他のプロジェクトがpkgを使用することに決めた理由を知りたい場合は、それらのプロジェクトのコミュニケーションチャネル(メーリングリスト、irc、ソーシャルメディアなど)を調べることをお勧めします。

関連する問題