Sebagai pengarang terlaris, saya menjemput anda untuk menerokai buku saya di Amazon. Jangan lupa ikuti saya di Medium dan tunjukkan sokongan anda. terima kasih! Sokongan anda bermakna dunia!
Modul Go telah merevolusikan pengurusan pergantungan dalam projek Go. Sebagai pembangun, saya mendapati bahawa menguasai Modul Go adalah penting untuk mencipta pangkalan kod yang mantap dan boleh diselenggara. Mari terokai amalan dan teknik terbaik untuk mengurus kebergantungan secara berkesan dalam projek Go.
Modul Go telah diperkenalkan dalam Go 1.11 dan menjadi mod lalai dalam Go 1.13. Ia menyediakan cara piawai untuk mengisytiharkan dan mengurus kebergantungan projek, memastikan binaan boleh dihasilkan semula dan kawalan versi yang dipermudahkan.
Untuk mula menggunakan Modul Go dalam projek, kami memulakannya dengan arahan go mod init:
go mod init example.com/myproject
Ini mencipta fail go.mod, yang berfungsi sebagai manifes pusat untuk kebergantungan projek kami. Fail go.mod mengandungi laluan modul, versi Go dan senarai kebergantungan yang diperlukan dengan versinya.
Apabila kami menambah import baharu pada kod Go kami, kami boleh menggunakan arahan go get untuk mengambil dan menambahkannya pada fail go.mod kami:
go get github.com/pkg/errors
Arahan ini memuat turun versi terkini pakej dan menambahkannya pada fail go.mod. Kami juga boleh menentukan versi tertentu:
go get github.com/pkg/errors@v0.9.1
Pemilihan versi dalam Modul Go mengikut prinsip versi semantik. Kami boleh menggunakan versi tepat, julat versi atau bahkan melakukan cincangan untuk menentukan kebergantungan kami.
Salah satu ciri utama Modul Go ialah fail go.sum, yang mengandungi cincangan kriptografi kandungan versi modul tertentu. Fail ini memastikan integriti dan ketulenan kebergantungan, menghalang serangan rantaian bekalan.
Apabila bekerja dengan Modul Go, penting untuk memastikan kebergantungan kami dikemas kini. Kita boleh menggunakan perintah go list -m -u all untuk menyemak kemas kini yang tersedia:
go list -m -u all
Untuk mengemas kini kebergantungan kepada versi serasi terkini mereka, kami menggunakan:
go get -u ./...
Walau bagaimanapun, adalah penting untuk menyemak perubahan dan menguji dengan teliti selepas mengemas kini kebergantungan, kerana versi baharu mungkin memperkenalkan perubahan pecah atau ketidakserasian.
Modul Go juga menyediakan cara kepada kebergantungan vendor, yang boleh berguna untuk binaan luar talian atau untuk memastikan binaan yang konsisten merentas persekitaran yang berbeza. Untuk kebergantungan vendor, kami menggunakan:
go mod vendor
Ini mencipta direktori vendor yang mengandungi semua kebergantungan projek. Untuk membina menggunakan kebergantungan vendor, kami menggunakan bendera -mod=vendor:
go build -mod=vendor
Satu ciri hebat Go Modules ialah keupayaan untuk menggunakan arahan ganti. Ini membolehkan kami menggantikan satu versi modul dengan yang lain, yang boleh sangat berguna untuk pembangunan tempatan atau tampung ujian:
go mod init example.com/myproject
Arahan dalam fail go.mod ini menggantikan modul yang ditentukan dengan versi berbeza atau malah salinan setempat.
Apabila bekerja pada berbilang modul berkaitan, kami boleh menggunakan ruang kerja untuk mengurusnya bersama-sama. Ruang kerja membolehkan kami membangun dan menguji berbilang modul secara serentak tanpa menerbitkannya. Kami mencipta fail go.work untuk menentukan ruang kerja:
go get github.com/pkg/errors
Ini mewujudkan ruang kerja yang mengandungi modul1 dan modul2, membolehkan kami membuat perubahan merentas berbilang modul dan mengujinya bersama-sama.
Menguruskan kebergantungan transitif boleh menjadi mencabar, terutamanya apabila bahagian projek kami yang berlainan memerlukan versi yang berbeza bagi kebergantungan yang sama. Go Modules mengendalikan perkara ini menggunakan pemilihan versi minimum (MVS), yang memilih versi minimum yang memenuhi semua keperluan.
Jika kami menghadapi konflik versi, kami boleh menggunakan arahan graf mod go untuk menggambarkan graf pergantungan dan mengenal pasti punca konflik:
go get github.com/pkg/errors@v0.9.1
Untuk menyelesaikan konflik, kami mungkin perlu mengemas kini kebergantungan langsung kami atau menggunakan arahan ganti untuk memaksa versi tertentu.
Adalah penting untuk mengekalkan graf pergantungan yang bersih. Menjalankan go mod tidy secara kerap membantu mengalih keluar kebergantungan yang tidak digunakan dan menambah yang hilang:
go list -m -u all
Apabila bekerja dengan repositori peribadi, kami mungkin perlu mengkonfigurasi Go untuk menggunakan pengesahan. Kita boleh melakukannya dengan menetapkan pembolehubah persekitaran GOPRIVATE:
go get -u ./...
Ini memberitahu Go untuk menganggap semua repositori di bawah github.com/mycompany sebagai peribadi dan gunakan pengesahan apabila mengaksesnya.
Untuk keselamatan yang lebih baik, kami boleh menggunakan pangkalan data checksum untuk mengesahkan integriti modul yang dimuat turun. Pergi secara lalai menggunakan pangkalan data checksum sum.golang.org, tetapi kami boleh mengkonfigurasi pangkalan data tambahan atau alternatif:
go mod vendor
Apabila mengerjakan projek yang perlu menyokong berbilang versi Go, kami boleh menggunakan kekangan binaan untuk memasukkan atau mengecualikan kod berdasarkan versi Go:
go build -mod=vendor
Ini memastikan kod kami kekal serasi merentas versi Go yang berbeza sambil masih memanfaatkan ciri baharu apabila tersedia.
Modul Go juga menyokong penarikan balik, yang membolehkan pengarang modul menandai versi tertentu sebagai tidak disyorkan untuk digunakan. Ini berguna untuk mengendalikan pepijat kritikal atau isu keselamatan:
replace github.com/pkg/errors => github.com/pkg/errors v0.9.0
Apabila menerbitkan modul, adalah penting untuk mengikuti prinsip versi semantik. Perubahan versi utama harus ditunjukkan dalam laluan modul untuk mengelakkan pengguna sedia ada rosak:
go work init ./module1 ./module2
Ini membolehkan versi utama yang berbeza bagi modul yang sama wujud bersama dalam satu binaan.
Untuk memastikan binaan boleh dihasilkan semula, adalah amalan yang baik untuk menyerahkan kedua-dua fail go.mod dan go.sum kepada kawalan versi. Ini menjamin bahawa semua pembangun dan sistem CI menggunakan versi pergantungan yang sama.
Apabila bekerja dengan projek besar, kami mungkin mahu membahagikan kod kami kepada berbilang modul. Ini boleh membantu mengurus kerumitan dan membenarkan bahagian projek diversi dan dikeluarkan secara bebas. Walau bagaimanapun, adalah penting untuk mempertimbangkan pertukaran, kerana modularisasi yang berlebihan boleh membawa kepada peningkatan kerumitan dalam pengurusan pergantungan.
Modul Go juga menyediakan alatan untuk menganalisis dan mengekalkan kebergantungan. Perintah go mod why membantu memahami mengapa modul tertentu diperlukan:
go mod init example.com/myproject
Arahan ini menunjukkan laluan terpendek dari modul kami kepada kebergantungan yang ditentukan, yang boleh berguna untuk mengenal pasti kebergantungan yang tidak diperlukan.
Untuk projek yang perlu menyokong binaan tanpa akses rangkaian, kami boleh menggunakan bendera -mod=readonly untuk menghalang akses rangkaian dan memastikan semua kebergantungan sudah tersedia secara setempat:
go get github.com/pkg/errors
Ini amat berguna dalam persekitaran CI/CD di mana kami ingin memastikan binaan menggunakan kebergantungan yang dinyatakan dalam go.mod dan go.sum.
Apabila berurusan dengan modul yang tidak digunakan, adalah penting untuk mempunyai strategi migrasi. Ini mungkin melibatkan mencari modul alternatif, memotong dan mengekalkan modul yang sudah tidak digunakan sendiri atau memfaktorkan semula kod kami secara beransur-ansur untuk mengalih keluar kebergantungan.
Kesimpulannya, pengurusan pergantungan yang berkesan dengan Modul Go memerlukan pemahaman yang baik tentang ciri dan amalan terbaiknya. Dengan mengikut garis panduan ini, kami boleh mencipta projek Go yang lebih boleh diselenggara, selamat dan cekap. Audit berkala ke atas tanggungan kami, memastikannya dikemas kini, dan mengekalkan graf modul yang bersih adalah kunci kepada kesihatan projek jangka panjang. Apabila Go terus berkembang, sentiasa mendapat maklumat tentang ciri baharu dan amalan terbaik dalam pengurusan pergantungan akan membantu kami menulis kod Go yang lebih baik dan membina aplikasi yang lebih mantap.
101 Buku ialah syarikat penerbitan dipacu AI yang diasaskan bersama oleh pengarang Aarav Joshi. Dengan memanfaatkan teknologi AI termaju, kami memastikan kos penerbitan kami sangat rendah—sesetengah buku berharga serendah $4—menjadikan pengetahuan berkualiti boleh diakses oleh semua orang.
Lihat buku kami Kod Bersih Golang tersedia di Amazon.
Nantikan kemas kini dan berita menarik. Apabila membeli-belah untuk buku, cari Aarav Joshi untuk mencari lebih banyak tajuk kami. Gunakan pautan yang disediakan untuk menikmati diskaun istimewa!
Pastikan anda melihat ciptaan kami:
Pusat Pelabur | Pelabur Central Spanish | Pelabur Jerman Tengah | Hidup Pintar | Epos & Gema | Misteri Membingungkan | Hindutva | Pembangunan Elit | Sekolah JS
Tech Koala Insights | Dunia Epok & Gema | Medium Pusat Pelabur | Medium Misteri Membingungkan | Sains & Zaman Sederhana | Hindutva Moden
Atas ialah kandungan terperinci Modul Go: Menguasai Pengurusan Ketergantungan dalam Projek Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!