1. 程式人生 > >Go 1.11 Module 介紹

Go 1.11 Module 介紹

自己 vendor ext tle gopath get 根目錄 pkg 三方


title: "Go 1.11 Module"
date: 2018-10-26T23:50:56+08:00
draft: false
---

Go 1.11 Module 介紹

go 1.11 發布了一種新的模式來管理go程序的依賴庫,這種方式不同於vendor模型。

它主要提供下面幾個重要特性:

  • 更方便的脫離GOPATH來工作(我理解是,逐漸淡化GOPATH,GOPATH一度給入門golang的新人留下很多坑)
  • 使用$GOPATH/pkg/mod來存儲go mod的緩存文件,提高go get速度
  • 可選的$GOPROXY和goproxy交互機制
    • 提供公司級或局域網級私有go mod
      服務器
    • golang.org/x/text等老大難第三方依賴庫提供緩存和提速

啟用 go mod

為啟用go mod,需要配置GO111MODULE環境變量:

  • GO111MODULE=off 無模塊支持,go 會從 $GOPATHvendor 文件夾尋找包。
  • GO111MODULE=on 模塊支持,go 會忽略 $GOPATHvendor 文件夾,只根據 go.mod 下載依賴。
  • GO111MODULE=auto$GOPATH/src 外面且根目錄有 go.mod 文件時,開啟模塊支持。

使用GOPROXY

此處有一個開源版本的 goproxy.io

和它的github主頁 github.com/goproxyio

自建GOPROXY server

Athens is a Server for Your Go Packages

項目地址 https://github.com/gomods/athens

Athens可以用來在公司內部建立自己的私有go mod服務器,
或者在公網建立一個對外公開的GOPROXY server

參考:

  • Introduction to Go Modules
  • Playing with Go module proxies
  • Athens

Go 1.11 Module 介紹