คำถามจากการ share เรื่องการพัฒนาระบบด้วยภาษา Go
โดยใน Dockerfile พบว่า ทำการ download package ที่ใช้งาน
ด้วยคำสั่ง go mod download
แต่ในการพัฒนานั้น เรามักจะใช้งานด้วยคำสั่ง go mod tidy มากกว่า
ดังนั้นทั้งสองคำสั่งนี้ต่างหรือเหมือนกันอย่างไร ?

คำตอบง่าย ๆ ก็ไปดูเอกสารเอาสิ !!

ตัวอย่างของ Dockerfile เป็นดังนี้

คำอธิบายเป็นดังนี้

  • ทั้งคู่จะทำการ download package หรือ dependency ที่ใช้งาน
  • go mod download จะทำการอ่านข้อมูลของ package ต่าง ๆ จากไฟล์ go.mod เท่านั้น โดยไม่ทำการแก้ไขไฟล์ เหมือนกับ npm install ใน NodeJS นั่นเอง
  • go mod tidy จะทำการ scan จาก code ของเราว่าใช้งาน package อะไรบ้าง จากนั้นจะทำการ download และแก้ไขไฟล์ go.mod เสมอ เมื่อมีการเปลี่ยนแปลง ทั้งการเพิ่มและลบสิ่งที่ไม่ได้ใช้งานใน code ออกไป

ดังนั้นในการพัฒนาเรามักจะใช้งาน go mod tidy นั่นเอง เพราะว่าเปลี่ยนแปลงบ่อย
ส่วนในการ deploy มักจะใช้งาน go mod download จากสิ่งที่กำหนดไว้แล้วเท่านั้น
แต่ถ้าไม่คิดอะไรมากก็ go mod tidy ไปเลย !!

ขอให้สนุกกับการเขียน code ครับ