Go vendoring
Sematkan dependensi ke dalam proyek agar build mandiri.
Pahami konsepnya
go mod vendor menyalin seluruh paket yang dipakai proyek — beserta seluruh versi persisnya — ke folder vendor/ di dalam repo. Setelah itu go build otomatis memakai folder itu dan mengabaikan cache modul: proyek bisa dibangun tanpa mengunduh apa pun dari internet.
Gunanya: build yang reprodusibel di lingkungan terkunci (CI tanpa akses luar, server on-premise, review keamanan yang mewajibkan semua kode berada dalam repo). Commit folder vendor berarti setiap orang — dan setiap mesin — memegang bit yang identik.
Sisi beratnya jelas: repo membengkak (vendor bisa puluhan-hingga-ratusan MB) dan tiap pembaruan dependensi ikut menyimpan diff besar. Karena itu keputusannya pragmatis: proyek biasa cukup go.mod + go.sum; vendoring saat lingkungan build benar-benar terputus atau kebijakan menuntutnya. Perintah go mod vendor dijalankan ulang setiap kali dependensi berubah, dan flag -mod=vendor memaksa mode itu eksplisit.
Coba contoh kode
$ go mod vendor
# seluruh dependensi tersalin ke folder vendor/
$ go build ./...
# build otomatis memakai vendor/ — tanpa unduhan
$ go build -mod=vendor ./...
# memaksa mode vendor secara eksplisitSetelah vendor dijalankan, folder vendor/ memuat salinan persis seluruh pustaka yang diimpor proyek (hanya yang benar-benar dipakai — paket tak terpakai tidak ikut). Commit folder itu, dan mesin tanpa internet pun bisa membangun binary identik.