Perintah
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Halaman ini adalah panduan umum. Gunakan referensi perintah saat ini untuk flag yang tepat: app, bundle, channel, dan build.
Penggunaan
Bagian berjudul “Usage”Semua perintah harus dijalankan di folder app Anda dengan proyek capacitor yang sudah diinisialisasi dengan benar.
npx @capgo/cli@latest init [apikey]
Metode ini akan memandu onboarding Anda langkah demi langkah.
Ini akan menambahkan aplikasi Anda ke Capgo. code akan ditambahkan ke aplikasi Anda untuk validasi update. Selain itu, ini akan melakukan build pada aplikasi Anda, meng-upload aplikasi ke Capgo, dan membantu Anda mengecek apakah update sudah berjalan.
npx @capgo/cli login [apikey]
Metode ini berfungsi untuk mengingat apikey untuk Anda.
Anda juga bisa memberikan:
--local Ini akan menyimpan apikey di repo lokal dan mengabaikannya di git ignore.
Doctor
Bagian berjudul “Doctor”npx @capgo/cli doctor
Perintah untuk mengecek apakah Capgo package Anda sudah versi terbaru.
Perintah ini juga berguna untuk laporan bug.
Tambah
Bagian berjudul “Add”npx @capgo/cli app add [appId]
[appId] app ID Anda dengan format com.test.app dijelaskan di sini.
💡 Jika tidak ditentukan, semua opsi akan diambil dari config Anda.
Opsional, Anda bisa memasukkan:
--icon [/path/to/my/icon]untuk menampilkan ikon kustom di web app Capgo.--name [test]untuk menggunakan nama kustom di dalam daftar.--apikey [key]kunci API untuk menghubungkan ke akun Anda.--retention [retention]masa retensi app bundle dalam hari, default 0 = selamanya.
Contoh capacitor.config.json untuk appId dan AppName, ikon akan dideteksi di folder resources
{ "appId": "ee.forgr.capacitor_go", "appName": "Capgo", "webDir": "dist"}npx @capgo/cli app set [appId]
[appId] adalah app ID Anda, formatnya dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--icon [/path/to/my/icon]agar ikon kustom muncul di web app Capgo.--name [test]agar muncul nama kustom di dalam daftar.--retention [retention]masa retensi app bundle dalam hari, default 0 = tak terbatas.--expose-metadata [true|false]untuk mengekspos metadata bundle (link dan komentar) ke plugin.--previewatau--no-previewuntuk mengaktifkan atau menonaktifkan QR code preview bundle dan channel.--allow-device-custom-idatau--no-allow-device-custom-iduntuk mengontrol custom device ID.--block-provider-infra-requestsatau--no-block-provider-infra-requestsuntuk mengontrol pemblokiran request datacenter Google dan Apple yang terdeteksi.--build-timeout-minutes [5-360]untuk mengatur timeout Native Build.--ios-store-url [url]atau--android-store-url [url]untuk mengatur URL store.--default-upload-channel [channel]untuk mengatur default upload channel.--default-download-channel [channel]untuk mengatur default download channel, atau--disable-download-channelsuntuk membuat semua download channel menjadi non-publik.--apikey [key]kunci API untuk menghubungkan ke akun Anda.
Daftar
Bagian berjudul “List”npx @capgo/cli app list [appId]
[appId] format app ID Anda com.test.app dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]kunci API untuk menghubungkan ke akun Anda.
npx @capgo/cli app delete [appId]
[appId] format app ID Anda com.test.app dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]kunci API untuk menghubungkan ke akun Anda.--bundledengan nomor versi hanya akan menghapus versi ini.
npx @capgo/cli app debug [appId]
[appId] format ID aplikasi Anda com.test.app dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]kunci API untuk menghubungkan ke akun Anda.--devicedengan perangkat spesifik yang ingin Anda debug
Pengaturan
Bagian berjudul “Setting”npx @capgo/cli app setting [path]
Edit konfigurasi Capacitor.
[path] - jalur pengaturan yang ingin Anda ubah. Misalnya, untuk mengubah appId, berikan appId.
Jika Anda ingin menonaktifkan auto update di capacitor-updater, berikan plugins.CapacitorUpdater.autoUpdate dengan --string off.
Anda WAJIB memberikan salah satu dari --string atau --bool!
Opsi:
--string <string>- mengatur setting ke string--bool <true | false>- mengatur setting ke boolean
Bundle
Bagian berjudul “Bundle”Upload
Bagian berjudul “Upload”npx @capgo/cli bundle upload [appId]
[appId] adalah app ID Anda, formatnya dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey <apikey>API key untuk menghubungkan ke akun Anda.--path <path>Path folder yang akan di-upload.--channel <channel>Channel yang akan dihubungkan.--external <url>Tautkan ke URL eksternal alih-alih upload ke Capgo Cloud.--iv-session-key <key>Set IV dan session key untuk URL bundle eksternal.--s3-endpoint <s3Endpoint>URL endpoint S3. Tidak berfungsi dengan delta upload atau opsi eksternal.--s3-region <region>Region untuk S3 bucket Anda.--s3-apikey <apikey>API key untuk endpoint S3 Anda.--s3-apisecret <apisecret>API secret untuk endpoint S3 Anda.--s3-bucket-name <bucketName>Nama bucket AWS S3 Anda.--s3-port <port>Port untuk endpoint S3 Anda.--no-s3-sslNonaktifkan SSL untuk upload S3.--key <key>Path kustom untuk public signing key (sistem v1).--key-data <keyData>Public signing key (sistem v1).--key-v2 <key>Path kustom untuk private signing key (sistem v2).--key-data-v2 <keyData>Private signing key (sistem v2).--bundle-urlMencetak bundle URL ke stdout.--no-keyAbaikan signing key dan kirim update tanpa enkripsi.--no-code-checkAbaikan pengecekan apakah notifyAppReady() dipanggil di source code dan index ada di root folder.--display-iv-sessionTampilkan di konsol IV dan session key yang dipakai untuk mengenkripsi update.--bundle <bundle>Nomor versi bundle yang akan di-upload.--auto-bump [level]Auto-increment dari bundle yang terhubung ke channel, atau versi app remote terbaru. Level:major,minor(default),patch(aliasfix),metadata, atauai(Workers AI membandingkan file lokal dengan delta manifest Capgo/channel sebelumnya, menentukan level, dan mencatat alasannya; melewati AI dan menaikkan versipatchjika tidak ada versi Capgo sebelumnya). Menaikkan versi sampai nama tersedia (nama yang dihapus tetap terpakai). Tidak bisa digabung dengan--bundle.--min-update-version <minUpdateVersion>Versi minimal yang dibutuhkan untuk update ke versi ini. Hanya digunakan jika disable auto update diatur ke metadata di channel.--auto-min-update-versionAtur versi update minimal berdasarkan native packages.--ignore-metadata-checkMengabaikan pengecekan metadata (node_modules) saat upload.--ignore-checksum-checkMengabaikan pengecekan checksum saat upload.--timeout <timeout>Timeout untuk proses upload dalam satuan detik.--deltaMengunggah file Delta (manifest) bersamaan dengan bundle lengkap.--delta-onlyHanya mengunggah update Delta (manifest), melewati bundle lengkap.--no-deltaMenonaktifkan upload Delta (manifest) (berguna jika mode instant applyautoUpdateaktif tetapi Anda ingin menggunakan bundle lengkap).--tusUpload bundle menggunakan protokol tus.--multipartMenggunakan protokol multipart untuk upload data ke S3, Deprecated, gunakan TUS sebagai gantinya.--encrypted-checksum <encryptedChecksum>Checksum terenkripsi (signature). Hanya digunakan saat mengunggah bundle eksternal.--package-json <packageJson>Path menuju package.json. Berguna untuk monorepo.--auto-set-bundleAtur bundle di capacitor.config.json.--node-modules <nodeModules>Daftar path ke node_modules. Berguna untuk monorepo (pisahkan dengan koma, contoh: ../../node_modules,./node_modules)
⭐️ Opsi External membantu menangani 2 kasus: perusahaan dengan masalah privasi, agar tidak mengirim code ke pihak ketiga, dan aplikasi berukuran > 200 MB. Dengan pengaturan ini, Capgo hanya menyimpan link ke zip dan mengirimkan link tersebut ke semua aplikasi.
👀 Capgo cloud tidak pernah melihat isi di dalam link (untuk opsi eksternal), atau di dalam code saat disimpan.
🔑 Anda bisa menambah lapisan keamanan kedua dengan enkripsi, sehingga Capgo tidak akan bisa melihat atau mengubah apa pun, menjadikannya “trustless”.
Contoh package.json untuk versi
{ "version": "1.0.2"}⛔ Versi harus lebih besar dari “0.0.0”.
💡 Jangan lupa perbarui nomor versi setiap kali mengirim, nomor versi tidak bisa ditimpa atau digunakan kembali setelah dihapus demi alasan keamanan.
Daftar
Bagian berjudul “List”npx @capgo/cli bundle list [appId]
[appId] app ID Anda dengan format com.test.app dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]Kunci API untuk menghubungkan ke akun Anda.
npx @capgo/cli bundle delete [appId]
[appId] format ID aplikasi Anda com.test.app dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]Kunci API untuk menghubungkan ke akun Anda.--bundledengan nomor versi hanya akan menghapus versi ini.
Pembersihan
Bagian berjudul “Cleanup”dalam rentang SemVer untuk versi major ke Cloud
npx @capgo/cli bundle cleanup [appId] --bundle=[majorVersion] --keep=[numberToKeep]
[appId] format ID aplikasi Anda com.test.app dijelaskan di sini di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]kunci API untuk menghubungkan ke akun Anda.--bundle [majorVersion]versi yang ingin Anda gunakan untuk menghapus paket sebelumnya, ini akan menyimpan paket terakhir +numberToKeep.--keep [numberToKeep]jumlah paket yang ingin Anda simpan (default 4).
Contoh: Jika Anda punya 10 versi dari 10.0.1 sampai 10.0.11, dan Anda menggunakan npx @capgo/cli cleanup [appId] --bundle=10.0.0 ini akan menghapus 10.0.1 sampai 10.0.6. Versi 10.0.7 sampai 10.0.11 akan tetap disimpan.
Jika Anda punya total 20 versi, dan Anda tidak menyertakan nomor bundle seperti ini: npx @capgo/cli cleanup [appId] --keep=2 Ini akan menghapus 18 versi, dan menyimpan 2 versi terakhir.
Perintah ini akan meminta konfirmasi dan menampilkan tabel berisi daftar file yang akan dipertahankan atau dihapus.
Encrypt
Bagian berjudul “Encrypt”Peringatan: Perintah ini sudah deprecated dan akan dihapus pada rilis major berikutnya. Silakan gunakan sistem enkripsi baru.
npx @capgo/cli bundle encrypt [path/to/zip]
Perintah ini digunakan saat Anda menggunakan sumber eksternal untuk menyimpan code atau untuk keperluan testing.
Opsional, Anda bisa memasukkan:
--key [/path/to/my/private_key] path dari private key Anda.
--key-data [privateKey] data private key, jika Anda ingin menggunakannya secara inline.
Perintah ini akan mencetak ivSessionKeyy dan menghasilkan zip terenkripsi, untuk digunakan dengan perintah upload atau decrypt.
Enkripsi V2
Bagian berjudul “Encrypt V2”npx @capgo/cli bundle encrypt [path/to/zip] [checksum]
Perintah ini digunakan saat Anda menggunakan sumber eksternal untuk menyimpan code atau untuk keperluan testing. Checksum adalah sha256 dari bundle (dihasilkan oleh —key-v2), yang digunakan untuk memverifikasi integritas file setelah dekripsi. File akan dienkripsi dengan private key dan dikirim bersama bundle. Pada enkripsi v2, checksum ditingkatkan menjadi “signature” dari bundle tersebut.
Opsional, Anda bisa memasukkan:
--key [/path/to/my/private_key] path dari private key Anda.
--key-data [privateKey] data private key, jika ingin menggunakan inline.
--json untuk mengeluarkan info dalam format json.
Perintah ini akan mencetak ivSessionKeyy dan membuat zip terenkripsi, untuk digunakan dengan perintah upload atau perintah decrypt.
Decrypt
Bagian berjudul “Decrypt”npx @capgo/cli bundle decrypt [path/to/zip] [ivSessionKey]
Opsional, Anda bisa memasukkan:
--key [/path/to/my/private_key] path dari private key Anda.
--key-data [privateKey] data private key, jika ingin menggunakan inline. Perintah ini utamanya digunakan untuk keperluan testing, akan mendekripsi zip dan menampilkan base64 decrypted session key di konsol.
Dekripsi V2
Bagian berjudul “Decrypt V2”npx @capgo/cli bundle decryptV2 [path/to/zip] [ivSessionKey]
Opsional, Anda bisa memasukkan:
--key [/path/to/my/private_key] path dari private key Anda.
--key-data [privateKey] data private key, jika ingin menggunakan inline. Perintah ini utamanya digunakan untuk keperluan testing, akan mendekripsi zip dan menampilkan base64 decrypted session key di konsol.
--checksum [checksum] checksum file tersebut, checksum akan diverifikasi setelah proses dekripsi.
npx @capgo/cli bundle zip [appId]
[appId] adalah app ID Anda, formatnya dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--path [/path/to/my/bundle]untuk upload folder tertentu.--bundle [1.0.0]untuk mengatur nomor versi bundle pada nama file.--name [myapp]untuk menimpa nama file.--jsonuntuk menampilkan info dalam format json.--no-code-checkuntuk mengabaikan pengecekan code dan tetap mengirim bundle.--key-v2untuk menggunakan sistem enkripsi baru. Ini wajib karena sistem enkripsi baru menggunakan checksum yang lebih baik untuk verifikasi integritas file.
Kompatibilitas
Bagian berjudul “Kompatibilitas”npx @capgo/cli bundle compatibility [appId] -c [channelName]
[appId] adalah app ID Anda, formatnya dijelaskan di di sini.
[channelName] nama channel yang ingin dicek.
Opsional, Anda bisa memasukkan:
--apikey [key]Kunci API untuk menghubungkan ke akun Anda.--textgunakan teks sebagai pengganti emoji di dalam tabel--channel [channel]channel untuk mengecek kompatibilitasnya.--package-json <packageJson>Path ke package.json. Berguna untuk monorepo--node-modules <nodeModules>Daftar path ke node_modules. Berguna untuk monorepo (pisahkan dengan koma, contoh: ../../node_modules,./node_modules)
Channel
Bagian berjudul “Channel”Tambah
Bagian berjudul “Add”npx @capgo/cli channel add [channelName] [appId]
[channelName] nama channel baru Anda, seperti production atau beta. [appId] format app ID Anda com.test.app dijelaskan di sini.
npx @capgo/cli channel delete [channelName] [appId]
[channelName] nama channel yang ingin Anda hapus. [appId] format app ID Anda com.test.app dijelaskan di sini.
Daftar
Bagian berjudul “List”npx @capgo/cli channel list [appId]
[appId] format app ID Anda com.test.app dijelaskan di sini.
Opsional, Anda bisa memasukkan:
--apikey [key]Kunci API untuk menghubungkan ke akun Anda.
npx @capgo/cli channel set [channelName] [appId]
[appId] adalah ID aplikasi Anda, formatnya dijelaskan di sini.
[channelName] nama channel yang ingin Anda konfigurasi, seperti production atau beta.
Opsional, Anda bisa memasukkan:
--bundle [1.2.3]bundle aplikasi Anda yang sudah dikirim ke cloud, untuk menghubungkannya ke sebuah channel.--latestdapatkan versi bundle daripackage.json:version, tidak bisa digunakan dengan--bundle.--state [ normal | default ]atur status channel, bisanormalataudefault. Satu channel harusdefault.--downgrademengizinkan channel mengirim versi downgrade ke perangkat.--no-downgrademelarang channel mengirim versi downgrade ke perangkat.--upgrademengizinkan channel mengirim versi upgrade (major) ke perangkat.--no-upgrademelarang channel mengirim versi upgrade (major) ke perangkat.--iosmengizinkan channel mengirim versi ke perangkat iOS.--no-iosmelarang channel mengirim versi ke perangkat iOS.--androidmengizinkan channel mengirim versi ke perangkat Android.--no-androidmelarang channel mengirim versi ke perangkat Android.--self-assignmemungkinkan perangkat untuk mendaftarkan diri ke channel ini.--no-self-assignmencegah perangkat untuk mendaftarkan diri ke channel ini.--disable-auto-update STRATEGYNonaktifkan strategi auto update untuk channel ini. Opsi yang tersedia: major, minor, patch, metadata, none.--apikey [key]Kunci API untuk menghubungkan ke akun Anda.
Nonaktifkan strategi update
Bagian berjudul “Nonaktifkan strategi update”Ada beberapa cara untuk menangani penonaktifan update bagi versi yang sudah terlalu lama.
Capgo tidak bisa mengupdate native code, jadi update dari versi dengan native code lama ke versi dengan native code yang sudah diperbarui seharusnya tidak memungkinkan.
Ada beberapa cara untuk melakukannya.
Pertama, major strategi. Ini mencegah update dari native baseline 0.0.0 -> target bundle 1.0.0. Angka major adalah angka yang disorot (1.0.0 dan 0.0.0).
Kedua adalah minor strategi. Ini mencegah update jika target bundle memiliki versi major atau minor yang berbeda dari baseline native perangkat, seperti 0.0.0 -> 1.1.0 atau 1.1.0 -> 1.2.0.
Ketiga, strategi patch capgo menyertakan strategi ini sebagai mode yang sangat ketat. Tidak disarankan untuk digunakan kecuali Anda benar-benar paham cara kerjanya.
Agar update dapat diterima, kondisi berikut harus terpenuhi:
- Major version sama antara target bundle dan
version_build - Minor version sama antara target bundle dan
version_build - Patch version sama antara target bundle dan
version_build - Hanya suffix versi yang boleh berbeda, seperti prerelease ("
-beta.2") atau build metadata ("+build.2)
Berikut adalah contoh skenario kapan update diizinkan atau ditolak
- 1.0.0-beta.1 -> 1.0.0-beta.2 diizinkan
- 1.0.0+build.1 -> 1.0.0+build.2 diizinkan
- 1.0.0 -> 1.0.1 diblokir
- 1.0.0 -> 1.1.0 diblokir
- 1.0.0 -> 2.0.0 diblokir
Perbandingan strategi menggunakan baseline native yang dikirim sebagai version_build, bukan bundle yang saat ini di-download sebagai version_name.
Terakhir adalah strategi yang paling rumit. Strategi metadata tersebut.
Pertama, Anda perlu tahu bahwa setelah diaktifkan, pembaruan tersebut AKAN gagal karena channel kekurangan metadata yang diperlukan.
Jika channel kekurangan metadata, Anda akan melihat pesan seperti ini:
Jika muncul pesan seperti ini, Anda harus membuka bundle pada channel yang bermasalah dan mengatur metadatanya.
Pertama, cari tahu channel mana yang bermasalah. Anda bisa melihatnya pada kolom misconfigured kolom
Kemudian buka channel yang bermasalah dan klik Bundle number. Ini akan mengarahkan Anda ke halaman bundle.
Setelah di sana, isi field Minimal update version . Ini harus berupa semver.
Jika nilai yang Anda masukkan bukan semver, Anda akan menerima error, tetapi jika berhasil, tampilannya akan seperti ini:
Anda mungkin tidak ingin mengatur data ini secara manual setiap kali update. Untungnya, CLI akan mencegah Anda mengirim update tanpa metadata ini
Untuk mengupload bundle dengan benar saat menggunakan metadata opsi, Anda perlu menyertakan --min-update-version dengan semver yang valid. Something like this:
Panduan --min-update-version bukan SATU-SATUNYA cara untuk menangani kompatibilitas.
Ada juga opsi --auto-min-update-version. Begini cara kerjanya.
Pertama, sistem akan mengecek versi yang saat ini diunggah ke channel. Ia memeriksa kompatibilitas sama seperti bundle compatibility perintah tersebut.
Kedua, jika versi baru 100% kompatibel, ia akan menggunakan kembali min_update_version dari versi terbaru di channel tersebut.
Jika tidak, ia akan mengatur min_update_version ke nomor bundle dari versi yang baru diunggah.
Anda akan selalu mendapatkan informasi mengenai min_update_version saat menggunakan opsi ini. Tampilannya akan seperti ini:
Jika versi baru tidak kompatibel, tampilannya akan seperti ini
Enkripsi End-to-End (Trustless)
Bagian berjudul “End-to-End encryption (Trustless)”Capgo mendukung end-to-end encryption, artinya bundle (code) Anda dienkripsi sebelum dikirim ke cloud dan didekripsi di perangkat. Untuk itu, Anda perlu membuat RSA key pair; gunakan perintah berikut untuk membuatnya.
Sistem enkripsi ini merupakan kombinasi RSA dan AES; kunci RSA digunakan untuk mengenkripsi kunci AES, dan kunci AES digunakan untuk mengenkripsi file.
Lihat di bawah untuk informasi lebih lanjut mengenai sistem enkripsi.
Skema enkripsi
Buat key untuk aplikasi Anda
Bagian berjudul “Buat key untuk aplikasi Anda”npx @capgo/cli key create
Opsional, Anda bisa memasukkan: --force untuk menimpa key yang sudah ada. Perintah ini akan membuatkan key pair di aplikasi Anda, dan meminta Anda menyimpan private key di tempat yang aman. Disarankan untuk tidak melakukan git commit pada private key dan tidak membagikannya kepada siapa pun.
Setelah pengujian lokal selesai, hapus kunci tersebut dari file konfigurasi dan tambahkan pada langkah CI dengan
key save
Simpan key di config aplikasi Anda
Bagian berjudul “Simpan key di config aplikasi Anda”npx @capgo/cli key save
Opsional, Anda bisa memasukkan:
--key [/path/to/my/public_key] path file public key Anda.
--key-data [publicKey] data public key, jika ingin menggunakan inline. Perintah ini berguna jika Anda mengikuti rekomendasi untuk tidak melakukan commit key di app config.
Integrasi CI
Bagian berjudul “Integrasi CI”Untuk mengotomatiskan pekerjaan Anda, saya sarankan buat GitHub action yang melakukan push ke server kami
Demo app kami
Bagian berjudul “Demo app kami”Jangan lupa konfigurasi env variable CI dengan key API Anda
Lanjut ke Commands
Bagian berjudul “Lanjutkan dari Commands”Jika Anda menggunakan Perintah untuk merencanakan operasi dashboard dan API, hubungkan dengan Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Introduction, Kunci API untuk detail implementasi di API Keys, Perangkat untuk detail implementasi di Devices, dan Bundle untuk detail implementasi di Bundles.