diff options
| author | Shulhan <ms@kilabit.info> | 2024-12-02 20:03:45 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2024-12-02 20:18:00 +0700 |
| commit | b82fc95848696e1521be8df1c34b151c6dfb9a63 (patch) | |
| tree | 874d0a3a924e63b8f2f436c0ae8cdbaf6fcd758b | |
| parent | e728a201bbbd0688b28582ab30210f60ec96acbe (diff) | |
| download | golang-id-web-b82fc95848696e1521be8df1c34b151c6dfb9a63.tar.xz | |
_content/blog: terjemahkan "Get familiar with workspaces"
| -rw-r--r-- | _content/blog/get-familiar-with-workspaces/index.adoc | 305 | ||||
| -rw-r--r-- | _content/blog/index.adoc | 3 | ||||
| -rw-r--r-- | _content/index.adoc | 23 |
3 files changed, 315 insertions, 16 deletions
diff --git a/_content/blog/get-familiar-with-workspaces/index.adoc b/_content/blog/get-familiar-with-workspaces/index.adoc new file mode 100644 index 0000000..b7e7036 --- /dev/null +++ b/_content/blog/get-familiar-with-workspaces/index.adoc @@ -0,0 +1,305 @@ += Mengenal ruang kerja Go +Beth Brown, atas nama tim Go +5 April 2022 +:toc: +:sectanchors: +:sectlinks: +:description: Mengenal penggunaan go.work atau ruang kerja Go + + +Go 1.18 menambahkan fitur ruang kerja (_workspace_) ke Go, yang +membuat kita dapat bekerja dengan beberapa modul secara simultan. + +Anda dapat mengunduh Go 1.18 (atau yang terbaru) dengan mengunjungi +halaman +https://go.dev/dl/[unduh^]. + +Halaman +https://go.dev/doc/go1.18[catatan rilis^] +menjelaskan lebih rinci tentang semua perubahan pada rilis Go 1.18. + + +== Ruang kerja Go + +Ruang kerja pada Go 1.18 membuat kita dapat bekerja dengan banyak +modul secara bersamaan tanpa harus menyunting berkas "go.mod" pada +setiap modul. +Setiap modul dalam sebuah ruang kerja diperlakukan sebagai modul utama +saat mencari dependensi. + +Sebelumnya, untuk menambahkan sebuah fitur ke dalam modul dan +memakainya di modul yang lain, kita harus menerbitkan perubahan +tersebut terlebih dahulu pada modul yang pertama, atau +https://go.dev/doc/tutorial/call-module-code[menyunting berkas +"go.mod"^] +dan mengganti modul yang ingin kita uji tersebut dengan direktif +`replace` menunjuk ke direktori di lokal, yang belum diterbitkan. +Supaya tidak salah saat menerbitkan, kita harus menghapus direktif +`replace` dari berkas "go.mod" setelah kita menerbitkan perubahan yang +dilakukan pada modul yang pertama. + +Dengan ruang kerja Go, kita mengontrol semua dependensi menggunakan +berkas "go.work" di dalam direktori paling atas dari ruang kerja kita. +Berkas "go.work" memiliki direktif `use` dan `replace` yang menimpa +setiap berkas "go.mod", sehingga tidak perlu menyunting setiap berkas +"go.mod" satu per satu. + +Sebuah ruang kerja Go dibuat dengan menjalankan "go work init" dengan +argumen berupa daftar direktori dari modul di lokal kita yang +dipisahkan oleh spasi. +Perintah `init` membuat berkas "go.work" yang berisi daftar modul +dalam ruang kerja tersebut. +Jika kita menjalankan "go work init" tanpa argumen, perintah tersebut +akan membuat sebuah ruang kerja kosong. + +Untuk menambahkan modul ke dalam ruang kerja, jalankan "go work use +[moddir]" atau secara manual menyunting berkas "go.work". +Jalankan "go work use -r $DIR" untuk menambahkan modul yang ada di +dalam direktori `$DIR` secara rekursif. +Jika sebuah direktori tidak memiliki berkas "go.mod", atau direktori +tersebut sudah tidak ada lagi, maka direktif `use` untuk direktori +tersebut akan secara otomatis dihapus dari dalam berkas "go.work". + +Sintak dari berkas "go.work" mirip dengan berkas "go.mod" dan berisi +direktif-direktif berikut: + +* `go`: menandakan versi perkakas go, misalnya "go 1.18" +* `use`: menambahkan sebuah modul di lokal ke dalam kumpulan + modul-modul utama untuk sebuah ruang kerja. + Argumen dari direktif ini yaitu path relatif ke direktori yang + berisi berkas "go.mod". + Direktif ini tidak menambahkan sub-modul yang ada di dalam sebuah + modul secara otomatis. +* `replace`: mirip dengan direktif `replace` pada berkas `go.mod`, + sebuah direktif `replace` menimpa _versi tertentu_ dari sebuah modul + dengan versi yang ditemukan di tempat lain. + + +== Alur kerja + +Ruang kerja Go sangat fleksibel dan mendukung beragam alur kerja. +Bagian-bagian selanjutnya menjelaskan secara singkat beberapa alur +kerja yang menurut kami sangat umum digunakan. + + +=== Menambahkan fitur ke modul lain dan menggunakan di modul kita + +. Buat sebuah direktori untuk ruang kerja. +. Salin modul lain yang akan kita ubah di lokal. +. Tambahkan fitur pada modul lain tersebut. +. Jalankan "go work init [path-ke-modul-lain]" di dalam direktori + ruang kerja. +. Buat perubahan pada modul kita yang menggunakan fitur yang baru kita + tambahkan pada modul lain tersebut. +. Jalankan "go work use [path-ke-modul-kita]" di dalam direktori + ruang kerja. ++ +-- +Perintah "go work use" menambahkan path dari modul kita ke dalam +berkas "go.work": +---- +go 1.18 + +use ( + ./path-ke-modul-lain + ./path-ke-modul-kita +) +---- +-- +. Jalankan pengujian pada modul kita berdasarkan fitur yang baru + ditambahkan. +. Terbit kan modul lain dengan fitur baru tersebut +. Terbit kan modul kita yang telah berisi penggunaan fitur dari modul + lain tersebut. + + +=== Bekerja dengan banyak modul dalam satu repositori + +Saat bekerja dengan banyak modul dalam satu repositori, berkas +"go.work" mendefinisikan ruang kerja itu sendiri, bukan menggunakan +direktif `replace` di setiap berkas "go.mod". + +. Buat sebuah direktori untuk ruang kerja. +. Salin repositori yang berisi modul-modul yang akan kita ubah. + Modul-modul tersebut tidak harus berada di dalam direktori yang sama + dengan ruang kerja, karena kita dapat menentukan path relatif dengan + menggunakan direktif `use` nantinya. +. Jalankan "go work init [path-ke-modul-satu] [path-ke-modul-dua]" di + dalam direktori ruang kerja. ++ +-- +Contoh: Kita sedang mengerjakan modul "example.com/x/tools/groundhog" +yang bergantung pada paket-paket lain yang ada di modul +"example.com/x/tools". + +Kita salin repositori "example.com/x/tools" ke dalam direktori bernama +"tools" dan menjalankan "go work init tools tools/groundhog" di dalam +direktori ruang kerja. + +Isi dari berkas "go.work" akan seperti berikut: +---- +go 1.18 + +use ( + ./tools + ./tools/groundhog +) +---- + +Setiap perubahan yang dibuat dalam modul "tools" akan dapat digunakan +oleh "tools/groundhog" di dalam ruang kerja tersebut. +-- + + +== Mengganti dependensi + +Untuk menguji modul-modul kita dengan konfigurasi dependensi yang +berbeda, kita bisa membuat banyak ruang kerja dengan berkas "go.work" +yang terpisah, atau tetap dengan satu ruang kerja tapi menutup +penggunaan direktif `use` yang tidak kita gunakan dalam berkas +"go.work". + +Untuk membuat banyak ruang kerja: + +. Buat direktori-direktori terpisah dengan kebutuhan dependensi yang + berbeda-beda. +. Jalankan "go work init" di setiap direktori ruang kerja tersebut. +. Tambahkan dependensi yang kita inginkan di setiap direktori ruang + kerja lewat perintah "go work use [path-ke-dependensi]". +. Jalankan "go run [path-ke-modul-utama]" di setiap ruang kerja untuk + menggunakan dependensi yang ditentukan oleh berkas "go.work". + +Untuk mencoba dependensi yang berbeda dalam ruang kerja yang sama, +bukalah berkas "go.work" dan tambah atau tutup dependensi yang +kita inginkan atau tidak gunakan. + + +=== Masih menggunakan GOPATH? + +Mungkin dengan menggunakan ruang kerja akan mengubah pikiran Anda. +Pengguna `GOPATH` dapat menggunakan dependensi menggunakan berkas +"go.work" yang berada di direktori utama dari `GOPATH`. +Ruang kerja Go tidak bertujuan untuk membuat ulang alur kerja pada +`GOPATH`, namun ia membuat sebuah pengaturan yang memiliki kesamaan +dengan `GOPATH` dengan kelebihan penggunaan modul-modul. + +Untuk membuat sebuah ruang kerja untuk `GOPATH`: + +. Jalankan "go work init" di dalam direktori `GOPATH`. +. Untuk menggunakan modul lokal atau versi tertentu sebagai dependensi + dari ruang kerja kita, jalankan "go work use [path-ke-modul]". +. Untuk menimpa dependensi yang sudah ada dalam berkas "go.mod" + kita, gunakan "go work replace [path-ke-modul]". +. Untuk menambahkan semua modul di dalam `GOPATH` atau direktori apa + pun, jalankan "go work -r" yang secara rekursif menambahkan + direktori-direktori yang berisi berkas "go.mod" ke ruang kerja. + Jika sebuah direktori tidak lagi berisi berkas "go.mod", atau sudah + tidak ada lagi, maka direktif `use` dari direktori tersebut akan + dihapus dari berkas "go.work". ++ +-- +NOTE: Jika kita memiliki proyek yang tidak menggunakan berkas "go.mod" +dan ingin ditambahkan ke dalam ruang kerja Go, masuk lah ke dalam +direktori proyek tersebut dan jalankan "go mod init", kemudian +tambahkan proyek tersebut ke dalam ruang kerja dengan cara "go work +use [path-ke-proyek]". +-- + + +=== Perintah-perintah pada ruang kerja + +Selain "go work init" dan "go work use", Go 1.18 juga memperkenalkan +perintah-perintah berikut untuk ruang kerja: + +* `go work sync`: simpan dependensi yang ada di dalam berkas "go.work" + kembali ke dalam berkas "go.mod" di setiap modul-modul di ruang + kerja. + +* `go work edit`: menyediakan antar muka untuk menyunting "go.work", + biasanya digunakan oleh perkakas atau skrip. + +Perintah pembangunan yang mengerti Go modul dan beberapa sub perintah +dari "go mod" memeriksa variabel lingkungan `GOWORK` untuk menentukan +apakah konteks mereka sedang bekerja dalam ruang kerja atau bukan. + +Mode ruang kerja akan otomatis aktif bila variabel `GOWORK` berisi +path ke sebuah berkas yang berakhiran ".work". +Untuk mengetahui berkas "go.work" yang sedang digunakan, jalankan +"go env GOWORK". +Keluaran akan kosong bila perintah go tidak sedang dalam mode ruang +kerja. + +Bila mode ruang kerja aktif, berkas "go.work" akan dibaca untuk +menentukan tiga parameter bagi mode ruang kerja: versi Go, daftar +direktori, dan daftar pengganti modul. + +Beberapa perintah berikut dapat Anda coba dalam mode ruang kerja +(dengan syarat Anda sudah tahu penggunaannya!): + +---- +go work init +go work sync +go work use +go list +go build +go test +go run +go vet +---- + + +=== Peningkatan penyuntingan + +Kami sangat gembira dengan pembaruan terhadap peladen bahasa Go +https://pkg.go.dev/golang.org/x/tools/gopls[gopls^] +dan +https://marketplace.visualstudio.com/items?itemName=golang.go[ekstensi +Go pada VSCode^] +yang membuat bekerja pada banyak modul pada editor yang kompatibel +dengan +https://microsoft.github.io/language-server-protocol/[LSP^] +sangat mudah dan menyenangkan. + +Mencari referensi, penyelesaian kode, dan mencari definisi; bekerja +dengan baik antar modul dalam sebuah ruang kerja. +Versi +https://github.com/golang/tools/releases/tag/gopls%2Fv0.8.1[0.8.1^] +dari `gopls` memperkenalkan diagnostik, penyelesaian, pemformatan dari +berkas "go.work". +Anda bisa menggunakan figure `gopls` tersebut pada penyunting yang +mendukung LSP. + +==== Catatan untuk penyunting tertentu + +https://github.com/golang/vscode-go/releases/tag/v0.32.0[Rilis +vscode-go^] +yang terbaru membolehkan akses cepat ke berkas ruang kerja lewat menu +"Quick Pick". + +image::https://user-images.githubusercontent.com/4999471/157268414-fba63843-5a14-44ba-be82-d42765568856.gif[] + +Penyunting +https://www.jetbrains.com/go/[GoLand^] +mendukung ruang kerja dan berencana menambahkan warna sintaksis dan +penyelesaian kode untuk berkas "go.work". + +Untuk informasi lebih lanjut tentang penggunaan `gopls` dengan +penyunting yang berbeda lihat +https://pkg.go.dev/golang.org/x/tools/gopls#readme-editors[dokumentasi +gopls^] + + +== Selanjutnya? + +* Unduh dan pasang +https://go.dev/dl/[Go yang terbaru^] +* Coba menggunakan +link:/ref/mod#workspaces[ruang kerja^] +lewat +link:/doc/tutorial/workspaces[Tutorial ruang kerja Go^] +* Baca +https://pkg.go.dev/cmd/go#hdr-Workspace_maintenance[dokumentasi +memelihara ruang kerja^] +* Eksplorasi perintah-perintah dari Go modul untuk +https://go.dev/ref/mod#commands-outside[bekerja di luar modul] +termasuk "go work init", "go work sync" dan lainnya. diff --git a/_content/blog/index.adoc b/_content/blog/index.adoc index c3b8cc3..e2fcd74 100644 --- a/_content/blog/index.adoc +++ b/_content/blog/index.adoc @@ -7,6 +7,9 @@ === 2022 +* link:/blog/get-familiar-with-workspaces/[Mengenal workspace^], + 5 April 2022. Beth Brown, untuk tim Go. + * link:/blog/supply-chain/[Mitigasi serangan rantai pasok^], 31 Maret 2022. Fillipo Valsorda. diff --git a/_content/index.adoc b/_content/index.adoc index 71cfbc5..3b509e7 100644 --- a/_content/index.adoc +++ b/_content/index.adoc @@ -36,29 +36,20 @@ link:/doc/[dokumentasi^]. Halaman ini berisi daftar terjemahan blog dari proyek Go resmi dan blog dari komunitas Go Indonesia. +* link:/blog/get-familiar-with-workspaces/[Mengenal ruang kerja Go^], + 5 April 2022. Beth Brown, atas nama tim Go. + * link:/blog/supply-chain/[Mitigasi serangan rantai pasok^], 31 Maret 2022. Fillipo Valsorda. * link:/blog/intro-generics/[Pengenalan terhadap generik^], 22 Maret 2022. Robert Griesemer dan Ian Lance Taylor. -* link:/blog/tls-cipher-suites/[Pemilihan pasangan _cipher_ otomatis pada crypto/tls^], - 15 September 2021. _Filippo Valsorda_. - -* link:/blog/go1.15/[Rilis Go 1.15^], - 11 Agustus 2020. _Alex Rakoczy_. - -* link:/blog/module-compatibility/[Bagian 5 - Menjaga Modul Anda tetap Kompatibel^], - 2 Juli 2020. _Jean de Klerk_ dan _Jonathan Amsterdam_ - -* link:/blog/a-new-go-api-for-protocol-buffers/[Go API baru untuk Protocol Buffers^], - 2 Maret 2020. Joe Tsai, Damien Neil, dan Herbie Ong - -* link:/blog/go1.14/[Go 1.14 telah dirilis^], - 25 Februari 2020. _Alex Rakoczy_ +* link:/blog/tls-cipher-suites/[Pemilihan pasangan _cipher_ otomatis pada crypto/tls^], + 15 September 2021. _Filippo Valsorda_. -* link:/blog/pkg.go.dev-2020/[Langkah selanjutnya untuk pkg.go.dev^], - 31 Januari 2020. _Julie Qiu_ +* link:/blog/context-and-structs/[Context dan struct^], + 24 Februari 2021. Jean de Klerk; Matt T. Proud Daftar artikel blog link:/blog/[lainnya^]. |
