در زبان گو یک کامند کاربردی در 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 به درستی استفاده کنید.
- از vendor فقط برای پروژه ای استفاده کنید که می خواهد در محیط های مختلف اجرا شود.
- استفاده از vendor باعث افزایش سریع روند CI/CD هنگام بیلد و تست می شود.
- زمانیکه vendor ایجاد می کنید فایل بخش های استفاده شده هر ماژول خارجی قرار میگیرد و باعث می شود حجم vendor خیلی کم باشد (پس نگران اینکه vendor مانند npm_module است نباشید)
- استفاده vendor به IDE گولند کمک می کند در زمان باز کردن پروژه با سرعت بیشتری ماژول ها را index کرده و کدها را سریعتر اسکن کند