4.5 آموزش کار با Vendor

4.5 آموزش کار با Vendor

در زبان گو یک کامند کاربردی در go mod به نام vendor داریم که ماژول هایی که داخل پروژه استفاده شده و مورد نیاز برای اجرا و بیلد می باشد را در محل پروژه کش می کند و به شما این امکان را می دهد خیلی سریع و راحت بدون نیاز به دانلود مجدد ماژول پروژه را بیلد و اجرا کنید.

 1$ go help mod vendor
 2usage: go mod vendor [-e] [-v] [-o outdir]
 3
 4Vendor resets the main module's vendor directory to include all packages
 5needed to build and test all the main module's packages.
 6It does not include test code for vendored packages.
 7
 8The -v flag causes vendor to print the names of vendored
 9modules and packages to standard error.
10
11The -e flag causes vendor to attempt to proceed despite errors
12encountered while loading packages.
13
14The -o flag causes vendor to create the vendor directory at the given
15path instead of "vendor". The go command can only use a vendor directory
16named "vendor" within the module root directory, so this flag is
17primarily useful for other tools.
18
19See https://golang.org/ref/mod#go-mod-vendor for more about 'go mod vendor'.

4.5.1 ایجاد vendor #

با دستور زیر می توانید در محل پروژه خود پوشه vendor ایجاد کنید و ماژول های استفاده شده را داخل این پوشه کش کنید.

1$ go mod vendor

4.5.2 افزودن ماژول های جدید به vendor #

در صورتیکه ماژول جدیدی را به پروژه اضافه کردید حتما باید بصورت دستی vendor را بروز کنید و کافیه دستور زیر را بزنید :

1$ go mod vendor

4.5.3 اجرا و بیلد پروژه با vendor #

شما می توانید پروژه خود را با ماژول های کش شده داخل vendor اجرا و بیلد کنید و دیگر نیازی به دریافت ماژول ها و کش کردن محلی نمی باشد.

نحوه بیلد

1$ go build -mod vendor -o main cmd/main.go

نحوه اجرا

1$ go run -mod vendor main.go

4.5.4 نکات کاربردی #

یکسری نکات در خصوص استفاده از vendor قرار دادم که به شما می کند تا از vendor به درستی استفاده کنید.

  1. از vendor فقط برای پروژه ای استفاده کنید که می خواهد در محیط های مختلف اجرا شود.
  2. استفاده از vendor باعث افزایش سریع روند CI/CD هنگام بیلد و تست می شود.
  3. زمانیکه vendor ایجاد می کنید فایل بخش های استفاده شده هر ماژول خارجی قرار میگیرد و باعث می شود حجم vendor خیلی کم باشد (پس نگران اینکه vendor مانند npm_module است نباشید)
  4. استفاده vendor به IDE گولند خیلی کمک می کند سریع ماژول ها را index و کدها را سریعتر اسکن کند موقع باز کردن پروژه