สรุปวิธีใช้ go module

บทความนี้เขียนตอน go version 1.11rc1 ซึ่งวิธีใช้อาจจะเปลี่ยนหลังจากนี้

ใน go1.11 เราจะสามารถใช้ go module ได้ผ่านคำสั่ง go mod ซึ่งจะมี flag ตัวนึงเอาไว้เปิด feature นี้ คือ GO111MODULE ซึ่งสามารถตั้งได้ 3 แบบ คือ auto, on, off

โดยที่ auto หมายถึง ให้ on เมื่อ project เราอยู่นอก GOPATH

โดยใน version go1.11rc1 จะมีค่า GO111MODULE=auto เป็นค่า default (ใน version 1.12 มีโอกาสที่จะเป็น on โดย default)

ซึ่งเราสามารถไปตั้ง GO111MODULE=on ใน .bash_profile ได้เลย แต่ vscode จะพัง :P

ดังนั้นจนกว่า vscode จะ support go module เราก็ใช้ auto กันไปก่อน

ถ้าเรารัน go mod ใน GOPATH เราจะต้องใส่ GO111MODULE=on ข้างหน้าด้วยเสมอ เช่น

GO111MODULE=on go mod init

แต่ในบทความนี้จะไม่ใส่ GO111MODULE=on นำหน้า ถือว่ารู้กัน :D


ขั้นตอนแรกให้เราไป init go module ใน project เราก่อน โดนการรัน

go mod init

เสร็จแล้วให้รัน

go mod tidy

เพื่อให้ดูว่า project ของเราใช้ lib ตัวไหนบ้าง go mod จะเอา list ไปใส่ใน go.mod ให้

ถ้าเราต้องการเอา code lib ใส่ใน folder vendor เพื่อที่จะ push ขึ้น git ก็แค่รัน

go mod vendor

ก็จะได้ folder vendor ออกมา

เสร็จแล้วเราก็แค่ push go.mod, go.sum, vendor ขึ้นไปบน git ได้เลย


แต่ถ้าเราทำ library แล้วไม่อยาก vendor พวก test framework เราจะไม่รัน tidy

แต่ให้ build แบบเปิด go module ไว้

GO111MODULE=on go build

เราจะได้ list lib ใน go.mod เฉพาะที่ใช้เท่านั้น


แล้วถ้าอยากจะ update หล่ะ ทำยังไงดี ?

ก็แค่รัน go get -u เหมือนปกติเลย

GO111MODULE=on go get -u github.com/user/lib

หรือถ้าอยากใส่ version, branch ก็ใส่ได้หลัง @

GO111MODULE=on go get -u github.com/user/lib@master
GO111MODULE=on go get -u github.com/user/lib@v1.3.0

แล้วถ้าจะ update ทุกอย่างเลยหล่ะ ?

ก็แค่รัน

GO111MODULE=on go get -u