ได้เวลาเปลี่ยนผ่าน Go Project ไปใช้ Go Module

ในที่สุดก็ได้เวลาอันสมควร ที่จะพา Project ที่ทำงานบน Production มาสักพักให้กลายเป็น Go Module สักที

อันที่จริง Go Module ออกมาสักพักแล้ว แต่ช่วงที่ขึ้น Project ใหม่ประมาณปีสองปีที่แล้ว ยังไม่มั่นใจใน Go Module เนื่องจากมี Package บางอันไม่ Support Go Module อยู่ เลยไม่ได้ใช้ Go Module ในตอนนั้น

บัดนี้ ได้เวลาอันสมควรแล้ว ที่เราจะเริ่มพา Project ที่ทำงานอยู่ ไปใช้ Go Module สักที!!!

เนื่องจากช่วงที่ยังไม่ได้ใช้ Go Module เราจำเป็นต้องใช้ cli ที่ใช้ในการจัดการ Package ของตัว Project นั้นคือ "dep" นั่นเอง

ตัว dep จะทำการสร้างไฟล์ 2 ไฟล์ขึ้นมา คือ Gopkg.lock และ Gopkg.toml เพื่อเก็บรายชื่อและ Snapshot ตัว Package version เอาไว้

วิธีการนั้นก็ง่ายมากครับ ขั้นตอนจะประมาณนี้ครับ

  1. ทำการ Copy Project ออกจาก GOPATH ไปไว้ที่อื่น
  2. ให้ทำการใช้คำสั่ง go mod init <project package name>
  3. go mod จะเริ่มทำการ migrate ตัว Gopkg ให้กลายเป็น go.mod หลังจากเสร็จให้ตรวจสอบว่ากระบวนการ restore package มี error หรือไม่
  4. ลบ folder ชื่อ vendor ทิ้ง
  5. ทำการใช้คำสั่ง go build เพื่อทำการทดสอบ build ว่ามีอะไรที่มีปัญหาหรือไม่
  6. ถ้ามีปัญหา เบื้องต้นให้ทำการ Upgrade Dependency Package ใน Project เนื่องจากบางครั้ง Package ที่เราใช้ มันไม่ Support Go Module ครับ
  7. เมื่อทดสอบว่า Project ทำงานได้ปกติแล้ว ให้ลบไฟล์ Gopkg.lock และ Gopkg.toml ทิ้ง