目次
ベンダーの機能
ベンダーの使用に関する推奨事項
govendor の概要
利便性と迅速な使用のために、
$GOPATH## の下にあります。 # パッケージを
ホームページ よくある問題 Go パッケージの依存関係管理ツールである govendor についての簡単な説明

Go パッケージの依存関係管理ツールである govendor についての簡単な説明

Apr 29, 2019 pm 01:45 PM
golang パッケージ管理

govendor は、vendor メカニズムに基づく Go パッケージの依存関係管理コマンド ライン ツールです。ネイティブ ベンダーとの非侵入的な統合、および他の依存関係管理ツールからの移行もサポートしており、異なるプロジェクトでの同じパッケージの異なるバージョンの開発と管理を、相互侵入することなく簡単に実現できます。

ベンダーの機能

当初、Go はこれより適切なパッケージ管理ツールを提供していませんでした。ベンダー機能はバージョン 1.5 から提供されていますが、環境変数 GO15VENDOREXPERIMENT=1 を手動で設定する必要があります。

go build または go run コマンドを実行すると、パッケージは次の順序で検索されます。

  • 次の順序でパッケージが検索されます。現在のパッケージのディレクトリ
  • src の下にベンダー ディレクトリが見つかるまで上のディレクトリを検索します。
  • GOROOT ディレクトリを検索します。
  • GOPATH の下にある依存パッケージを探します

バージョン 1.6 がリリースされたとき、この環境変数の値はデフォルトで 1 に設定されていました。この値は、go env コマンドを使用して表示できます。

バージョン 1.7 がリリースされたとき、この環境変数は削除され、vendor 機能がデフォルトで有効になりました。

ベンダーの使用に関する推奨事項

  • ライブラリ プロジェクト (main を含まない package) は、外部ファイルを独自のバージョンで保存しないでください。 control 特別な理由がなく、これを行う理由がわかっている場合を除き、パッケージは vendor ディレクトリにあります。
  • アプリケーション (main を含む package) では、vendor ディレクトリを 1 つだけ存在することをお勧めします。コードベースレベルのディレクトリにあります。

    関連チュートリアル: go ビデオ チュートリアル

govendor の概要

govendor は、vendor## に基づくディレクトリです。 # メカニカルパッケージ管理ツール。

    プロジェクトのソース コードからの依存パッケージの分析と、
  • $GOPATH からプロジェクトの vendor ディレクトリへのコピーをサポートします
  • サポートされていますパッケージのバージョンを指定し、パッケージとバージョンの管理に
  • vendor/vendor.json を使用します。これは、PHP の Composer
  • govendor を使用してサポートするのと同様です。 add/ update コマンドは、$GOPATH
  • から依存パッケージをコピーします。
  • vendor/*/ ファイルが無視される場合は、govendor を使用できます。 sync は依存関係を復元します。 パッケージ
  • は直接使用できます。
  • govendor fetch は依存パッケージを追加または更新します。
  • 利用可能な
  • govendor merge は他のパッケージから使用できます。 vendor パッケージ管理ツール govendor へのワンクリック移行
  • Linux、macOS、Windows、さらには既存のすべてのオペレーティング システムをサポート
  • Git、 Hg、SVN、BZR (パスを指定する必要があります)
govendor を使用するための要件

:

    プロジェクトは
  • にある必要があります。 $GOPATH/src directory
  • Go バージョンが 1.5 の場合は、環境変数
  • set GO15VENDOREXPERIMENT=1
installation## を手動で設定する必要があります。 #
go get -u github.com/kardianos/govendor
ログイン後にコピー

利便性と迅速な使用のために、

govendor

を PATH に $GOPATH/bin を追加することをお勧めします。 Linux/macOS の設定は次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>export PATH=&quot;$GOPATH/bin:$PATH&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div>Initialization

vendor

Initialization のプロジェクト ルート ディレクトリで次のコマンドを実行します。プロジェクトのルート ディレクトリ、つまり vendor ディレクトリと

vendor.json

ファイルが自動的に生成されます。この時点で、vendor.json ファイルの内容は次のとおりです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>govendor init</pre><div class="contentsignin">ログイン後にコピー</div></div>Common Commands

が参照され、

$GOPATH## の下にあります。 # パッケージを

vendor
    ディレクトリにコピーします
  • <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>{ &quot;comment&quot;: &quot;&quot;, &quot;ignore&quot;: &quot;test&quot;, &quot;package&quot;: [], &quot;rootPath&quot;: &quot;govendor-example&quot; }</pre><div class="contentsignin">ログイン後にコピー</div></div>指定されたパッケージのみを $GOPATH
    govendor add +external
    ログイン後にコピー
    ## からコピーします
  • #コード内で参照されているすべてのパッケージとそのステータスをリストします
    govendor add gopkg.in/yaml.v2
    ログイン後にコピー
    govendor list
    ログイン後にコピー
パッケージが参照されているパッケージをリストします
  •  e  github.com/gin-contrib/sse
     e  github.com/gin-gonic/gin
     e  github.com/gin-gonic/gin/binding
     e  github.com/gin-gonic/gin/internal/json
     e  github.com/gin-gonic/gin/render
     e  github.com/golang/protobuf/proto
     e  github.com/mattn/go-isatty
     e  github.com/ugorji/go/codec
     e  gopkg.in/go-playground/validator.v8
     e  gopkg.in/yaml.v2
    pl  govendor-example
      m github.com/json-iterator/go
      m golang.org/x/sys/unix
    ログイン後にコピー
    govendor list -v fmt
    ログイン後にコピー
リモートからウェアハウスにパッケージを追加または更新します (
    はコピーを
  • $GOPATH
  • に保存しません)
     s  fmt
        ├──  e  github.com/gin-contrib/sse
        ├──  e  github.com/gin-gonic/gin
        ├──  e  github.com/gin-gonic/gin/render
        ├──  e  github.com/golang/protobuf/proto
        ├──  e  github.com/ugorji/go/codec
        ├──  e  gopkg.in/go-playground/validator.v8
        ├──  e  gopkg.in/yaml.v2
        └── pl  govendor-example
    ログイン後にコピー
  • 指定されたバージョンのpackage<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>govendor fetch golang.org/x/net/context</pre><div class="contentsignin">ログイン後にコピー</div></div>
  • プロジェクト独自のコードのみをフォーマットします (
vendor
    ディレクトリは変更しません)
  • govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55
    govendor fetch golang.org/x/net/context@v1   # Get latest v1.*.* tag or branch.
    govendor fetch golang.org/x/net/context@=v1  # Get the tag or branch named "v1".
    ログイン後にコピー
    ビルドとプロジェクトの内部コードをコンパイルします。 パッケージ
  • <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>govendor fmt +local</pre><div class="contentsignin">ログイン後にコピー</div></div>
  • プロジェクト内のテスト ケースのみをテストします。
    govendor install +local
    ログイン後にコピー
  • すべてをビルドします。
vendor
    パッケージ
  • govendor test +local
    ログイン後にコピー
    すべての依存パッケージを
  • vendor ディレクトリにプルします ($GOPATH
  • 既存または存在しないパッケージを含む)
    govendor install +vendor,^program
    ログイン後にコピー
  • パッケージはすでに vendor ディレクトリにありますが、$GOPATH
    govendor fetch +out
    ログイン後にコピー
  • ## から更新したいと考えています#変更されました $GOPATH ここで、変更されてコミットされていないパッケージを vendor
govendor update +vendor
ログイン後にコピー
  • パッケージにフォークして更新したいのですが、まだマージされていません。どうすればよいですか? 最新のコード パッケージ
    govendor update -uncommitted <updated-package-import-path>
    ログイン後にコピー
    を参照すると、normal
  • ではなく
myfork
    からコードがプルされるようになります。

vendor.json は、依存関係パッケージの情報、更新を取得する方法を記録します<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>govendor fetch github.com/normal/pkg::github.com/myfork/pkg</pre><div class="contentsignin">ログイン後にコピー</div></div>govendor サブコマンド<ul>各詳しい使用方法については、サブコマンドについては、<li>govendor COMMAND -h<code> を使用するか、github.com/kardianos/govendor/context を参照して、ソース コード パッケージがどのように実装されているかを確認できます。

## 建立#list列出&過濾依賴包及其狀態add從##update$GOPATH#removevendorstatus## fetch從遠端倉庫新增或更新套件到專案 目錄(不會儲存到 sync根據 拉取相符的套件到 #從其他基於vendor與go get$GOPATH列出所有依賴套件的LICENSE可一次執行多個govendorgovendor 狀態參數
子指令 功能
#init vendor 目錄和vendor.json 檔案
$GOPATH 複製套件到專案vendor 目錄
#從 更新依賴套件到專案vendor 目錄
目錄移除依賴的套件
列出所有缺失、過期和修改過的套件
vendor$GOPATH)
vendor.jsonvendor 目錄##migrate
實作的套件管理工具中一鍵遷移 #get
類似,將套件下載到,再將依賴套件複製到vendor 目錄license
shell
指令

狀態縮寫lGOPATH 中、卻不在項目vendor## vendor #已在 目錄下的套件 stds標準庫裡的套件 excludedx#明確被排除的外部套件 unusedu#未使用的套件,即在m programp主程式包,即可編譯為執行檔的套件
意義
local
本地包,即專案內部所寫的套件 externale外部包,即在
目錄 ##v
vendor
vendor
目錄下,但專案中並未引用到
missing
被引用了但卻找不到的套件

outside#相當於狀態為 external missing

all

###所有套件################支援狀態參數的子指令有:###list## #、###add###、###update###、###remove###、###fetch#########Go modules######普大喜奔的是,從Go 1.11 版本開始,官方已內建了更為強大的Go modules 來一統多年來Go 包依賴管理混亂的局面(Go 官方之前推出的dep 工具也幾乎胎死腹中),並且將在1.13版本中正式預設開啟。 ######目前已受到社群的看好和強烈推薦,建議新專案採用 Go modules。 ###

以上がGo パッケージの依存関係管理ツールである govendor についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Jun 06, 2024 pm 05:14 PM

Go ではファイルを安全に読み書きすることが重要です。ガイドラインには以下が含まれます。 ファイル権限の確認 遅延を使用してファイルを閉じる ファイル パスの検証 コンテキスト タイムアウトの使用 これらのガイドラインに従うことで、データのセキュリティとアプリケーションの堅牢性が確保されます。

Golang データベース接続用の接続プールを構成するにはどうすればよいですか? Golang データベース接続用の接続プールを構成するにはどうすればよいですか? Jun 06, 2024 am 11:21 AM

Go データベース接続の接続プーリングを構成するにはどうすればよいですか?データベース接続を作成するには、database/sql パッケージの DB タイプを使用します。同時接続の最大数を制御するには、MaxOpenConns を設定します。アイドル状態の接続の最大数を設定するには、ConnMaxLifetime を設定します。

golangフレームワークの長所と短所の比較 golangフレームワークの長所と短所の比較 Jun 05, 2024 pm 09:32 PM

Go フレームワークは、その高いパフォーマンスと同時実行性の利点で際立っていますが、比較的新しい、開発者エコシステムが小さい、一部の機能が欠けているなどの欠点もあります。さらに、急速な変化と学習曲線はフレームワークごとに異なる場合があります。 Gin フレームワークは、効率的なルーティング、組み込みの JSON サポート、強力なエラー処理機能により、RESTful API を構築するための一般的な選択肢です。

Golang フレームワークでのエラー処理のベスト プラクティスは何ですか? Golang フレームワークでのエラー処理のベスト プラクティスは何ですか? Jun 05, 2024 pm 10:39 PM

ベスト プラクティス: 明確に定義されたエラー タイプ (エラー パッケージ) を使用してカスタム エラーを作成する 詳細を提供する エラーを適切にログに記録する エラーを正しく伝播し、非表示または抑制しないようにする コンテキストを追加するために必要に応じてエラーをラップする

GolangでJSONデータをデータベースに保存するにはどうすればよいですか? GolangでJSONデータをデータベースに保存するにはどうすればよいですか? Jun 06, 2024 am 11:24 AM

JSON データは、gjson ライブラリまたは json.Unmarshal 関数を使用して MySQL データベースに保存できます。 gjson ライブラリは、JSON フィールドを解析するための便利なメソッドを提供します。json.Unmarshal 関数には、JSON データをアンマーシャリングするためのターゲット型ポインターが必要です。どちらの方法でも、SQL ステートメントを準備し、データをデータベースに永続化するために挿入操作を実行する必要があります。

Golang フレームワークと Go フレームワーク: 内部アーキテクチャと外部機能の比較 Golang フレームワークと Go フレームワーク: 内部アーキテクチャと外部機能の比較 Jun 06, 2024 pm 12:37 PM

GoLang フレームワークと Go フレームワークの違いは、内部アーキテクチャと外部機能に反映されています。 GoLang フレームワークは Go 標準ライブラリに基づいてその機能を拡張していますが、Go フレームワークは特定の目的を達成するための独立したライブラリで構成されています。 GoLang フレームワークはより柔軟であり、Go フレームワークは使いやすいです。 GoLang フレームワークはパフォーマンスの点でわずかに優れており、Go フレームワークはよりスケーラブルです。ケース: gin-gonic (Go フレームワーク) は REST API の構築に使用され、Echo (GoLang フレームワーク) は Web アプリケーションの構築に使用されます。

golang フレームワークでよくあるセキュリティ問題を解決するにはどうすればよいですか? golang フレームワークでよくあるセキュリティ問題を解決するにはどうすればよいですか? Jun 05, 2024 pm 10:38 PM

Go フレームワークで一般的なセキュリティ問題に対処する方法 Web 開発で Go フレームワークが広く採用されているため、そのセキュリティを確保することが重要です。以下は、一般的なセキュリティ問題を解決するための実践的なガイドであり、サンプル コードも含まれています。 1. SQL インジェクション SQL インジェクション攻撃を防ぐには、プリペアド ステートメントまたはパラメータ化されたクエリを使用します。例: constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

Golang の正規表現に一致する最初の部分文字列を見つけるにはどうすればよいですか? Golang の正規表現に一致する最初の部分文字列を見つけるにはどうすればよいですか? Jun 06, 2024 am 10:51 AM

FindStringSubmatch 関数は、正規表現に一致する最初の部分文字列を検索します。この関数は、最初の要素が一致した文字列全体で、後続の要素が個々の部分文字列である、一致する部分文字列を含むスライスを返します。コード例: regexp.FindStringSubmatch(text,pattern) は、一致する部分文字列のスライスを返します。実際のケース: 電子メール アドレスのドメイン名を照合するために使用できます。たとえば、email:="user@example.com", pattern:=@([^\s]+)$ を使用してドメイン名を照合します。 [1]。