Golang 套件管理工具 Glide

发布于 2017-12-30 作者 Charlotte 498次 浏览 版块 分享

如同 nodejs 的 npm , Go 也擁有自己的套件管理工具 Glide,這裡介紹一下的使用方式

安裝方式 (window 10)

下載取得專案
> go get github.com/Masterminds/glide

進入 GOPATH\src\github.com\Masterminds\glide 資料夾

編譯執行檔

go build glide.go

執行檔移置 bin 資料夾

go install

如果環境變數有設定go/bin就可以直接執行

建立一個新專案

建立glide.yaml,這是 glide 的專案設定檔,類似 npm 的 package.json

glide init

新增第三方套件

假設我們要新增 github.com/foo/bar 套件 (後面可以接版號)

glide get github.com/foo/bar#^1.2.3

glide 會幫你在專案中新增一個** vendor 資料夾,並把相依的套件放在裡面,之後執行go時,會先尋找 vendor 資料夾有無套件,如果沒有才會去找 $GOPATH**

下載專案後安裝相依套件

glide install

如果專案內沒有 glide.lock 檔案,當您執行 glide install 後,其實系統會先執行 glide up 產生 glide.lock 檔案

window10 安裝問題處理

如果出現錯誤

[ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1. output: Access is denied. 0 dir(s) moved.

這是一個 window10 的 bug ,請去修改 github.com/Masterminds/glide/path/winbug.go 76 行 move 改 xcopy

// Handking windows cases first
	if runtime.GOOS == "windows" {
		msg.Debug("Detected Windows. Moving files using windows command")
		// cmd := exec.Command("cmd.exe", "/c", "move", o, n) //move改xcopy
		cmd := exec.Command("cmd.exe", "/c", "xcopy /s/y", o, n+"\\")
		output, err := cmd.CombinedOutput()
		if err != nil {
			return fmt.Errorf("Error moving files: %s. output: %s", err, output)
		}

修改後重新編譯一次可

其他 Glide 參數

  • –all-dependencies 下載相依套件全部的 dependencies
  • -s 下載後刪除 .git 目錄
  • -v 移除 Godeps/_workspace 等相關目錄

原文地址

收藏
暂无回复