← Kembali ke kursus
Pelajaran kursus · Go
Pelajaran 55

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 eksplisit

Setelah 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.