1. 程式人生 > >golang包管理工具dep使用簡明攻略

golang包管理工具dep使用簡明攻略

安裝

dep需要golang版本在1.9以上go get -u github.com/golang/dep/cmd/dep

dep工作流

因為有牆,所以使用之前請先設定命令列代理,梯子自備

export {http,https}_proxy='127.0.0.1:1080'
  • 新建專案
    // 專案需要建立在gopath下
    cd $GOPATH/src
    mkdir my-project
    dep init -v
  • dep init 新專案或還未使用包管理的專案初始化

    init會分析go檔案中import的包並安裝,將依賴資訊寫入Gopkg.toml檔案,安裝的revision寫入Gopkg.lock檔案

  • dep ensure 同步依賴包 一個命令可以完成包的安裝缺失的包、解除安裝無用的包,使程式碼中的import、lock檔案、vendor中的包保持同步
  • Gopkg.toml這個檔案主要是用來人工修改的,可以新增一些限制條件,Gopkg.lock才是真正的版本資訊
  • dep ensure -add [package name] 安裝指定包
  • dep ensure -update [package name] 更新指定包
  • dep ensure -update 更新所有包
  • dep status 檢視同步狀態

舊專案改造

  1. 進入專案根目錄執行dep init -gopath -v

    解釋一下常用引數:

    -gopath 從本地的gopath獲取包版本

    -v verbose

    -skip-tools dep會自動從之前的包管理檔案中載入版本資訊,如govendor,glide等。如果你不想從之前的包管理遷移可以加上此引數

  2. 將Gopkg.toml和Gopkg.lock提交到git
  3. 之後安裝新的依賴使用dep ensure -add [package name]來安裝
  4. 在新環境拿到專案後使用dep ensure -v即可安裝依賴

使用dep可能存在的坑

  • 牆很煩,請務必設定命令列代理
  • 使用dep時儘量帶上 -v 命令,如果半分鐘沒響應就ctrl+c中斷,就可以看到fail的原因,dep遇到一些錯誤不會自己退出
  • 私有庫的問題,比如gitlab上的,參考這篇文章https://segmentfault.com/a/11...。經測試,其實也不用在toml裡寫密碼,只要你在電腦上git設定了儲存密碼或者配置了ssh。簡單來說就是直接用git clone不需要輸入密碼確認之類的就能用dep down下來了

這是之前整理的dep使用攻略,隨著golang1.11釋出,gomod已經上線,以後應該會遷移到gomod。不過目前gomod還不成熟,很多專案也沒有激進的升級到1.11版本,dep還有用武之地。