[系列] - 使用 go modules 包管理工具(一)

概述

我想實現一個開箱即用的 API 框架的輪子,這個輪子是基於 Gin 基礎上開發的。

爲什麼是開箱即用,它會集成哪些功能?

clipboard.png

以上功能點,都是常用的,後期可能還會增加。

廢話不多說,咱們開始吧。

創建一個項目,咱們首先要考慮一個依賴包的管理工具。

常見的包管理有,dep、go vendor、glide、go modules 等。

最開始,使用過 dep,當時被朋友 diss 了,推薦我使用 go modules 。

現在來說一下 go modules ,這個是隨着 Go 1.11 的發佈和我們見面的,這是官方提倡的新的包管理。

說一個環境變量:GO111MODULE,默認值爲 auto 。

當項目中有 go.mod 時,使用 go modules 管理,反之使用 舊的 GOPATH 和 vendor機制。

如果就想使用 go modules ,可以將 GO111MODULE 設置爲 on 。

直接上手吧。

初始化

咱們在 GOPATH 之外的地方,新建一個空文件夾 go-gin-api

cd go-gin-api && go mod init go-gin-api

輸出:

go: creating new go.mod: module go-gin-api

這時目錄中多一個 go.mod 文件,內容如下:

module go-gin-api

go 1.12

到這,go mod 初始化就完成,接下來添加依賴包 - gin。

添加依賴包

在目錄中創建一個 main.go 的文件,放上如下代碼:

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

這代碼沒什麼特別的,就是官方的入門Demo。

接下來,開始下載依賴包。

go mod tidy

執行完成後,看一下 go.mod 文件:

module go-gin-api

go 1.12

require github.com/gin-gonic/gin v1.4.0

這時,看到新增一個 gin v1.4.0 的包。

還生成了一個 go.sum 的文件,這個文件可以暫時先不管。

這時發現了 2 個問題。

1、目錄中沒發現 gin 包,包下載到哪了?

下載到了 GOPATH/pkg/mod 目錄中。

2、GoLand 編輯器中關於 Gin 的引用變紅了?

在這裏編輯器需要設置一下,如圖:

clipboard.png

點擊 Apply 和 OK 即可。

如果這招不靈,還可以執行:

go mod vendor

這個命令是將項目依賴的包,放到項目的 vendor 目錄中,這肯定就可以了。

go mod 命令

go mod tidy

拉取缺少的模塊,移除不用的模塊。

我常用這個命令。

go mod vendor

將依賴複製到vendor下。

我常用這個命令。

go mod download

下載依賴包。

go mod verify

檢驗依賴。

go mod graph

打印模塊依賴圖。

其他命令,可以執行 go mod ,查看即可。

小結

這篇文章,分享了 go modules 的使用。

  • 使用 go modules 從零搭建一個項目。
  • GoLand 編輯器使用 go modules。

今天就到這了,下一篇文章開始搭建 API 項目了,寫參數驗證。

源碼地址

https://github.com/xinliangno...

clipboard.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章