Anda dapat menemukan MetaMask versi terbaru di situs resmi kami. Untuk bantuan menggunakan MetaMask, kunjungi Situs Dukungan Pengguna kami.
Untuk pertanyaan umum, permintaan fitur, atau pertanyaan pengembang, kunjungi Forum Komunitas kami.
MetaMask mendukung browser berbasis Firefox, Google Chrome, dan Chromium. Kami merekomendasikan menggunakan versi browser terbaru yang tersedia.
Untuk berita terkini, ikuti kami di X.
Untuk mempelajari cara mengembangkan aplikasi yang kompatibel dengan MetaMask, kunjungi Dokumen Pengembang kami.
Untuk mempelajari cara berkontribusi pada basis kode MetaMask, kunjungi Dokumen Kontributor kami.
Untuk mempelajari cara berkontribusi pada proyek Ekstensi MetaMask itu sendiri, kunjungi Dokumen Ekstensi kami.
Sebagai alternatif untuk membangun di mesin lokal Anda, ada opsi baru untuk mengaktifkan dan menjalankan lingkungan pengembangan dalam waktu kurang dari 5 menit dengan menggunakan GitHub Codespaces. Harap dicatat bahwa ada Kuota Bulanan Gratis Terbatas, dan setelah itu GitHub akan mulai menagih Anda.
Catatan: Anda ditagih untuk waktu yang dihabiskan untuk menjalankan dan untuk penyimpanan yang digunakan
Mulailah dengan mengklik tombol di atas
Tab browser baru akan terbuka dengan versi jarak jauh dari Visual Studio Code (pemuatan ini memerlukan waktu beberapa menit)
Sebuah "Browser Sederhana" akan terbuka di dalam browser dengan noVNC -- klik Hubungkan
Klik tombol di kanan atas tab Browser Sederhana untuk membuka jendela noVNC di tabnya sendiri
Buka sidebar noVNC di sebelah kiri, klik ikon roda gigi, ubah Scaling Mode menjadi Remote Resizing
Langkah opsional:
Tunggu sekitar 20 detik ekstra pada peluncuran pertama hingga skrip selesai
Klik kanan pada desktop noVNC untuk meluncurkan Chrome atau Firefox dengan MetaMask yang sudah diinstal sebelumnya
Ubah beberapa kode, lalu jalankan yarn start
membangun dalam mode dev
Setelah satu atau dua menit, pembuatannya akan selesai, dan Anda dapat melihat perubahannya di desktop noVNC
Anda ditagih untuk waktu yang dihabiskan untuk menjalankan dan penyimpanan yang digunakan
Ruang kode dijeda setelah 30 menit tidak aktif, dan dihapus otomatis setelah 30 hari tidak aktif
Anda dapat mengelola Codespaces Anda di sini: https://github.com/codespaces
Anda mungkin ingin menjedanya secara manual sebelum batas waktu 30 menit
Jika Anda memiliki beberapa Codespace yang menganggur selama beberapa hari, Anda dapat dengan cepat kehabisan kuota penyimpanan. Anda harus menghapus yang tidak ingin Anda gunakan lagi, dan mungkin hanya menyimpan 1 atau 2 dalam jangka panjang. Dimungkinkan juga untuk menggunakan kembali Codespace lama dan berpindah cabang, daripada membuat yang baru dan menghapus yang lama.
Jika Anda bukan Pengembang Internal MetaMask, atau sedang melakukan pengembangan pada fork, kunci Infura default akan berada pada Paket Gratis dan memiliki permintaan per detik yang sangat terbatas. Jika Anda ingin menggunakan kunci Infura Anda sendiri, ikuti instruksi .metamaskrc
dan INFURA_PROJECT_ID
di bagian Membangun di mesin lokal Anda.
Instal Node.js versi 20
Jika Anda menggunakan nvm (disarankan) menjalankan nvm use
akan secara otomatis memilih versi node yang tepat untuk Anda.
Aktifkan Corepack dengan menjalankan perintah corepack enable
dalam proyek ekstensi metamask. Corepack adalah utilitas yang disertakan dengan Node.js secara default. Ia mengelola Yarn per proyek, menggunakan versi yang ditentukan oleh properti packageManager
di file package.json proyek. Harap dicatat bahwa rilis modern Yarn tidak dimaksudkan untuk diinstal secara global atau melalui npm.
Gandakan .metamaskrc.dist
di dalam root dan ganti namanya menjadi .metamaskrc
dengan menjalankan cp .metamaskrc{.dist,}
.
Jika Anda belum memiliki akun Infura, Anda dapat membuatnya secara gratis di website Infura.
Ganti nilai INFURA_PROJECT_ID
dengan Kunci API Infura pribadi Anda.
Jika men-debug MetaMetrics, Anda harus menambahkan nilai untuk kunci tulis Segmen SEGMENT_WRITE_KEY
, lihat Pengembangan di MetaMask - Segmen.
Jika men-debug pengecualian yang tidak tertangani, Anda harus menambahkan nilai untuk SENTRY_DSN
Sentry Dsn, lihat Pengembangan di MetaMask - Sentry.
Secara opsional, ganti nilai PASSWORD
dengan kata sandi dompet pengembangan Anda agar tidak memasukkannya setiap kali Anda membuka aplikasi.
Jalankan yarn install
untuk menginstal dependensi.
Bangun proyek ke folder ./dist/
dengan yarn dist
(untuk browser berbasis Chromium) atau yarn dist:mv2
(untuk Firefox)
Secara opsional, untuk membuat build pengembangan, Anda dapat menjalankan yarn start
(untuk browser berbasis Chromium) atau yarn start:mv2
(untuk Firefox)
Build yang tidak terkompresi dapat ditemukan di /dist
, build yang dikompresi dapat ditemukan di /builds
setelah dibuat.
Lihat readme sistem build untuk informasi penggunaan sistem build.
Ikuti petunjuk berikut untuk memverifikasi bahwa build lokal Anda berjalan dengan benar:
Bagaimana cara menambahkan build khusus ke Chrome
Bagaimana cara menambahkan build khusus ke Firefox
Untuk mendapatkan masukan cepat dari fungsi kebugaran kualitas kode bersama kami sebelum melakukan kode, Anda dapat menginstal git hooks kami dengan Husky.
$ yarn githooks:install
Anda dapat membaca lebih lanjut tentangnya di dokumentasi pengujian kami.
Jika Anda menggunakan VS Code dan tidak dapat melakukan penerapan dari sidebar kontrol sumber karena kesalahan "perintah tidak ditemukan", coba langkah-langkah berikut dari dokumen Husky.
Untuk memulai pembangunan pengembangan (misalnya dengan logging dan pengamatan file) jalankan yarn start
.
Anda dapat memulai pembangunan pengembangan dengan status dompet yang dimuat sebelumnya, dengan menambahkan TEST_SRP='
dan PASSWORD='
ke file .metamaskrc
. Maka Anda memiliki pilihan berikut:
Mulai dompet dengan tanda perlengkapan default, dengan menjalankan yarn start:with-state
.
Periksa daftar tanda perlengkapan yang tersedia, dengan menjalankan yarn start:with-state --help
.
Mulai dompet dengan tanda perlengkapan khusus, dengan menjalankan yarn start:with-state --FIXTURE_NAME=VALUE
misalnya yarn start:with-state --withAccounts=100
. Anda dapat mengoper bendera sebanyak yang Anda mau. Perlengkapan lainnya akan mengambil nilai default.
Anda juga dapat memulai pembangunan pengembangan menggunakan perintah yarn webpack
, atau yarn webpack --watch
. Ini menggunakan sistem pembangunan alternatif yang jauh lebih cepat, namun belum siap produksi. Lihat README Webpack untuk informasi lebih lanjut.
Untuk memulai React DevTools, jalankan yarn devtools:react
dengan build pengembangan yang diinstal di browser. Ini akan terbuka di jendela terpisah; tidak diperlukan ekstensi browser.
Untuk memulai Ekstensi Redux DevTools:
Instal paket remotedev-server
secara global (misalnya yarn global add remotedev-server
)
Instal ekstensi Redux Devtools.
Buka ekstensi Redux DevTools dan centang kotak "Gunakan server khusus (lokal)" di Pengaturan Remote DevTools, menggunakan konfigurasi server default (host localhost
, port 8000
, kotak centang koneksi aman tidak dicentang).
Kemudian jalankan perintah yarn devtools:redux
dengan build pengembangan yang diinstal di browser. Ini akan memungkinkan Anda menggunakan ekstensi Redux DevTools untuk memeriksa MetaMask.
Untuk membuat build pengembangan dan menjalankan kedua alat ini secara bersamaan, jalankan yarn start:dev
.
Situs pengujian ini dapat digunakan untuk menjalankan alur pengguna yang berbeda.
Jalankan pengujian unit dan linter dengan yarn test
. Untuk menjalankan pengujian unit saja, jalankan yarn test:unit
.
Anda dapat menjalankan linter sendiri dengan yarn lint
, dan Anda dapat secara otomatis memperbaiki beberapa masalah lint dengan yarn lint:fix
. Anda juga dapat menjalankan kedua perintah ini hanya pada perubahan lokal untuk menghemat waktu dengan masing-masing yarn lint:changed
dan yarn lint:changed:fix
.
Untuk panduan debugging Jest menggunakan Node.js, lihat docs/tests/jest.md.
Rangkaian pengujian e2e kami dapat dijalankan di Firefox atau Chrome. Berikut cara memulai pengujian e2e:
Sebelum menjalankan pengujian e2e, pastikan Anda telah menjalankan yarn install
untuk mengunduh dependensi. Selanjutnya, Anda memerlukan build pengujian. Anda memiliki 3 pilihan:
Gunakan yarn download-builds:test
untuk mengunduh dan membuka zip build pengujian untuk Chrome dan Firefox dengan cepat ke dalam folder ./dist/
. Metode ini cepat dan nyaman untuk pengujian standar.
Buat build pengujian khusus: untuk pengujian terhadap tipe build berbeda, gunakan yarn build:test
. Perintah ini memungkinkan Anda membuat build pengujian untuk berbagai tipe, termasuk:
yarn build:test
untuk pembuatan utama
yarn build:test:flask
untuk pembuatan labu
yarn build:test:mmi
untuk pembuatan mmi
yarn build:test:mv2
untuk build mv2
Mulai pengujian build dengan perubahan langsung: yarn start:test
sangat berguna untuk pengembangan. Ini memulai uji coba yang secara otomatis mengkompilasi ulang kode aplikasi setelah ada perubahan. Opsi ini ideal untuk pengujian dan pengembangan berulang. Perintah ini juga memungkinkan Anda membuat build pengujian untuk berbagai tipe, termasuk:
yarn start:test
untuk pembuatan utama
yarn start:test:flask
untuk pembuatan labu
yarn start:test:mv2
untuk pembuatan mv2
Catatan: Perintah yarn start:test
(yang memulai tipe build testDev) menonaktifkan LavaMoat untuk sistem build dan aplikasi, sehingga menawarkan pengalaman pengujian yang efisien selama pengembangan. Di sisi lain, yarn build:test
memungkinkan LavaMoat meningkatkan keamanan baik dalam sistem pembangunan maupun aplikasi, sehingga mencerminkan lingkungan produksi dengan lebih dekat.
Setelah build pengujian Anda siap, pilih browser untuk pengujian e2e Anda:
Untuk Firefox, jalankan yarn test:e2e:firefox
.
Catatan: Jika Anda menjalankan Firefox sebagai paket snap di Linux, pastikan Anda mengaktifkan variabel lingkungan yang sesuai: FIREFOX_SNAP=true yarn test:e2e:firefox
Untuk Chrome, jalankan yarn test:e2e:chrome
.
Skrip ini mendukung opsi tambahan untuk debugging. Gunakan --help
untuk melihat semua opsi yang tersedia.
Pengujian e2e tunggal dapat dijalankan dengan yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
bersama dengan opsi di bawah.
--browser Mengatur browser yang akan digunakan; tentukan 'chrome', 'firefox', 'all' atau biarkan tidak disetel agar berjalan di 'all' secara default. [string] [default: 'all'] --debug Jalankan pengujian dalam mode debug, catat setiap interaksi driver [boolean] [default: true] --retries Tetapkan berapa kali pengujian harus dicoba ulang jika gagal. [angka] [default: 0] --leave-running Membiarkan browser tetap berjalan setelah pengujian gagal, bersama dengan hal lain yang digunakan pengujian (ganache, dapp pengujian, dll.) [boolean] [default: false] -- perbarui-snapshot Perbarui snapshot pengujian E2E [alias: -u] [boolean] [default: false]
Misalnya, untuk menjalankan pengujian account-details
menggunakan Chrome, dengan logging debug dan browser disetel agar tetap terbuka jika terjadi kegagalan, Anda akan menggunakan: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
Saat mengembangkan fitur baru, kami sering menggunakan tanda fitur. Saat kami bersiap untuk menjadikan fitur ini tersedia secara umum (GA), kami menghapus tanda fitur. Tanda fitur yang ada tercantum dalam file .metamaskrc.dist
. Untuk menjalankan pengujian e2e dengan tanda fitur tertentu diaktifkan, pertama-tama Anda perlu membuat versi pengujian dengan tanda fitur tersebut diaktifkan. Ada dua cara untuk mencapai hal ini:
Untuk mengaktifkan tanda fitur di konfigurasi lokal Anda, pertama-tama Anda harus memastikan bahwa Anda memiliki file .metamaskrc
yang disalin dari .metamaskrc.dist
. Kemudian, dalam file .metamaskrc
lokal, Anda dapat menyetel tanda fitur yang diinginkan ke true. Setelah ini, pengujian build dengan tanda fitur diaktifkan dapat dibuat dengan mengeksekusi yarn build:test
.
Alternatifnya, untuk mengaktifkan tanda fitur secara langsung selama pembuatan pengujian, Anda dapat meneruskan parameter sebagai benar melalui baris perintah. Misalnya, mengaktifkan tanda fitur MULTICHAIN dapat dilakukan dengan menjalankan MULTICHAIN=1 yarn build:test
atau MULTICHAIN=1 yarn start:test
. Metode ini memungkinkan penyesuaian cepat pada tanda fitur tanpa mengubah file .metamaskrc
.
Setelah Anda membuat build pengujian dengan tanda fitur yang diinginkan diaktifkan, lanjutkan menjalankan pengujian seperti biasa. Pengujian Anda sekarang akan dijalankan terhadap versi ekstensi dengan tanda fitur spesifik yang diaktifkan. Misalnya: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
Pendekatan ini memastikan pengujian e2e Anda secara akurat mencerminkan pengalaman pengguna untuk fitur GA mendatang.
Tipe build yang berbeda memiliki set pengujian e2e yang berbeda. Untuk menjalankannya, lihat di file package.json
. Anda akan menemukan:
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=tes simpul chrome/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=tes simpul chrome/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=uji simpul firefox/e2e/run-all.js",
Saat menjalankan e2e pada build MMI, Anda perlu mengetahui bahwa ada 2 rangkaian pengujian yang terpisah:
MMI menjalankan sebagian dari tes e2e MetaMask. Untuk memfasilitasi hal ini, kami telah menambahkan tag @no-mmi
ke nama pengujian yang tidak berlaku untuk tipe build ini.
MMI menjalankan serangkaian tes warisan e2e spesifik lainnya yang didokumentasikan dengan lebih baik di sini
Setiap kali Anda mengubah dependensi (menambah, menghapus, atau memperbarui, baik di package.json
atau yarn.lock
), ada berbagai file yang harus selalu diperbarui.
yarn.lock
:
Jalankan kembali yarn
setelah perubahan Anda untuk memastikan yarn.lock
telah diperbarui dengan benar.
Jalankan yarn lint:lockfile:dedupe:fix
untuk menghapus dependensi duplikat dari lockfile.
Konfigurasi allow-scripts
di package.json
Jalankan yarn allow-scripts auto
untuk memperbarui konfigurasi allow-scripts
secara otomatis. Konfigurasi ini menentukan apakah skrip instalasi/postinstall paket diperbolehkan untuk dijalankan. Tinjau setiap paket baru untuk menentukan apakah skrip instalasi perlu dijalankan atau tidak, uji jika perlu.
Sayangnya, yarn allow-scripts auto
akan berperilaku tidak konsisten pada platform yang berbeda. Pengguna macOS dan Windows mungkin melihat perubahan yang tidak relevan terkait dengan dependensi opsional.
File kebijakan LavaMoat
Ada dua set file kebijakan LavaMoat:
Setiap kali Anda membuat ulang file kebijakan, tinjau perubahannya untuk menentukan apakah akses yang diberikan ke setiap paket tampaknya sesuai.
Sayangnya, yarn lavamoat:auto
akan berperilaku tidak konsisten pada platform yang berbeda. Pengguna macOS dan Windows mungkin melihat perubahan yang tidak relevan terkait dengan dependensi opsional.
Jika Anda terus mengalami kegagalan kebijakan bahkan setelah membuat ulang file kebijakan, coba buat ulang kebijakan setelah instalasi bersih dengan melakukan:
Perlu diingat bahwa segala jenis impor dinamis atau penggunaan dinamis global mungkin luput dari analisis statis LavaMoat. Lihat dokumentasi LavaMoat atau minta bantuan jika Anda mengalami masalah apa pun.
Ini harus dibuat ulang setiap kali dependensi yang digunakan oleh sistem build itu sendiri berubah.
Ini harus dibuat ulang setiap kali dependensi produksi untuk aplikasi web berubah.
File kebijakan produksi LavaMoat ( lavamoat/browserify/*/policy.json
), yang dibuat ulang menggunakan yarn lavamoat:webapp:auto
. Tambahkan --help
untuk penggunaan.
File kebijakan LavaMoat sistem build ( lavamoat/build-system/policy.json
), yang dibuat ulang menggunakan yarn lavamoat:build:auto
.
rm -rf node_modules/ && yarn && yarn lavamoat:auto
Jika Anda adalah anggota tim MetaMask dan PR Anda berada di cabang repositori, Anda dapat menggunakan perintah bot @metamaskbot update-policies
untuk meminta bot MetaMask memperbarui kebijakan secara otomatis untuk Anda.
Jika PR Anda berasal dari fork, Anda dapat meminta anggota tim MetaMask untuk membantu memperbarui file kebijakan.
Petunjuk pembaruan manual: Tl;dr adalah menjalankan yarn lavamoat:auto
untuk memperbarui file-file ini, tetapi mungkin ada kesalahan dalam detailnya:
File Atribusi
Jika Anda adalah anggota tim MetaMask dan PR Anda berada di cabang repositori, Anda dapat menggunakan perintah bot @metamaskbot update-attributions
untuk meminta bot MetaMask memperbarui file atribusi secara otomatis untuk Anda.
Pembaruan manual: jalankan yarn attributions:generate
.
Visual hierarki dan dependensi pengontrol pada musim panas 2022.
Visual dari seluruh basis kode.
Bagaimana cara menambahkan terjemahan baru ke MetaMask
Panduan Penerbitan
Cara menggunakan emulator TREZOR
Berkembang di MetaMask
Cara menghasilkan visualisasi pengembangan repositori ini
Bagaimana cara menambahkan konfirmasi baru
Pedoman dukungan peramban
Perluas fitur MetaMask dengan MetaMask Snaps.
Minta pengguna Anda untuk menambah dan beralih ke jaringan baru.
Ubah logo yang muncul saat dapp Anda terhubung ke MetaMask.