您可以在我們的官方網站上找到最新版本的 MetaMask。如需使用 MetaMask 的協助,請造訪我們的使用者支援網站。
對於一般問題、功能請求或開發人員問題,請造訪我們的社群論壇。
MetaMask 支援 Firefox、Google Chrome 和基於 Chromium 的瀏覽器。我們建議使用最新的可用瀏覽器版本。
要了解最新新聞,請在 X 上關注我們。
要了解如何開發 MetaMask 相容的應用程序,請訪問我們的開發人員文件。
若要了解如何為 MetaMask 程式碼庫做出貢獻,請造訪我們的貢獻者文件。
若要了解如何為 MetaMask 擴充專案本身做出貢獻,請造訪我們的擴充文件。
作為在本機電腦上建置的替代方案,有一個新選項可以使用 GitHub Codespaces 在 5 分鐘內啟動並運行開發環境。請注意,每月免費配額有限,之後 GitHub 將開始向您收費。
注意:您需要按運行時間和使用的存儲付費
點擊上面的按鈕開始
將開啟一個新的瀏覽器選項卡,其中包含 Visual Studio Code 的遠端版本(這將需要幾分鐘的時間來載入)
將在瀏覽器中開啟一個帶有 noVNC 的“簡單瀏覽器”——點擊“連接”
按一下「簡單瀏覽器」標籤右上角的按鈕可在其自己的標籤中開啟 noVNC 窗口
打開左側的 noVNC 側邊欄,點擊齒輪圖標,將縮放模式變更為遠端調整大小
可選步驟:
首次啟動時再等待約 20 秒,以便腳本完成
右鍵點選 noVNC 桌面啟動預先安裝 MetaMask 的 Chrome 或 Firefox
更改一些程式碼,然後運行yarn start
以開發模式構建
一兩分鐘後,它將完成構建,您可以在 noVNC 桌面中看到您的更改
您需要按運行時間和使用的存儲付費
程式碼空間在 30 分鐘不活動後暫停,並在 30 天不活動後自動刪除
您可以在這裡管理您的 Codespace:https://github.com/codespaces
您可能需要在 30 分鐘超時之前手動暫停它們
如果您有多個閒置的 Codespace 閒置數天,您可能很快就會耗盡儲存配額。您應該刪除那些您不打算再使用的,並且從長遠來看可能只保留 1 或 2 個。還可以重新使用舊的程式碼空間並切換分支,而不是建立新的程式碼空間並刪除舊的程式碼空間。
如果您不是 MetaMask 內部開發人員,或以其他方式在分叉上進行開發,則預設的 Infura 金鑰將位於免費方案中,且每秒的請求非常有限。如果您想使用自己的 Infura 金鑰,請按照在本機上建置部分中的.metamaskrc
和INFURA_PROJECT_ID
說明進行操作。
安裝 Node.js 版本 20
如果您正在使用 nvm(建議),執行nvm use
將自動為您選擇正確的節點版本。
透過在 metamask-extension 專案中執行corepack enable
指令來啟用 Corepack。 Corepack 是 Node.js 預設包含的實用程式。它使用專案的 package.json 檔案中的packageManager
屬性指定的版本,按專案管理 Yarn。請注意,Yarn 的現代版本不適合全域安裝或透過 npm 安裝。
在根目錄中複製.metamaskrc.dist
並透過執行cp .metamaskrc{.dist,}
將其重新命名為.metamaskrc
。
如果您沒有 Infura 帳戶,您可以在 Infura 網站上免費建立帳戶。
將INFURA_PROJECT_ID
值替換為您自己的個人 Infura API 金鑰。
如果偵錯 MetaMetrics,您需要為SEGMENT_WRITE_KEY
段寫入鍵新增一個值,請參閱在 MetaMask 上開發 - 段。
如果偵錯未處理的異常,您需要為SENTRY_DSN
Sentry Dsn 新增一個值,請參閱在 MetaMask - Sentry 上進行開發。
(可選)將PASSWORD
值替換為您的開發錢包密碼,以避免每次打開應用程式時輸入該密碼。
執行yarn install
來安裝相依性。
使用yarn dist
(對於基於Chromium的瀏覽器)或yarn dist:mv2
(對於Firefox)將項目建置到./dist/
資料夾
或者,要建立開發版本,您可以執行yarn start
(對於基於Chromium的瀏覽器)或yarn start:mv2
(對於Firefox)
未壓縮的建置可以在/dist
中找到,壓縮的建置一旦建置就可以在/builds
中找到。
有關構建系統使用信息,請參閱構建系統自述文件。
請按照以下說明驗證您的本機建置是否已正確運作:
如何將自訂建置新增至 Chrome
如何為 Firefox 添加自訂構建
要在提交程式碼之前從我們共享的程式碼品質健身功能中獲得快速回饋,您可以使用 Husky 安裝我們的 git hooks。
$ yarn githooks:install
您可以在我們的測試文件中閱讀有關它們的更多資訊。
如果您使用的是 VS Code,並且由於「未找到命令」錯誤而無法從原始程式碼管理側邊欄進行提交,請嘗試 Husky 文件中的這些步驟。
若要啟動開發建置(例如,使用日誌記錄和檔案監視),請執行yarn start
。
您可以透過將TEST_SRP='<insert SRP here>'
和PASSWORD='<insert wallet password here>'
新增至.metamaskrc
文件,以預先載入的錢包狀態開始開發建置。然後您有以下選擇:
透過執行yarn start:with-state
,使用預設的固定標誌啟動錢包。
透過執行yarn start:with-state --help
檢查可用的固定標誌清單。
透過執行yarn start:with-state --FIXTURE_NAME=VALUE
使用自訂固定標誌啟動錢包,例如yarn start:with-state --withAccounts=100
。您可以傳遞任意數量的標誌。其餘燈具將採用預設值。
您也可以使用yarn webpack
指令或yarn webpack --watch
啟動開發建置。這使用了更快的替代構建系統,但尚未準備好投入生產。有關更多信息,請參閱 Webpack 自述文件。
若要啟動React DevTools,請執行yarn devtools:react
並在瀏覽器中安裝已安裝的開發版本。這將在一個單獨的視窗中打開;不需要瀏覽器擴充功能。
啟動 Redux DevTools 擴充:
全域安裝yarn global add remotedev-server
remotedev-server
)
安裝 Redux Devtools 擴充功能。
開啟 Redux DevTools 擴充功能並選取 Remote DevTools 設定中的「使用自訂(本機)伺服器」複選框,使用預設伺服器設定(主機localhost
、連接埠8000
、安全連線複選框未選取)。
然後執行命令yarn devtools:redux
並在瀏覽器中安裝開發版本。這將使您能夠使用 Redux DevTools 擴充功能來檢查 MetaMask。
若要建立開發版本並同時執行這兩個工具,請執行yarn start:dev
。
此測試站點可用於執行不同的使用者流程。
運行單元測試和 linter with yarn test
。若要僅執行單元測試,請執行yarn test:unit
。
您可以使用yarn lint
自行執行linter,並且可以使用yarn lint:fix
自動修復一些lint 問題。您也可以分別使用yarn lint:changed
和yarn lint:changed:fix
對本機變更執行這兩個指令以節省時間。
有關使用 Node.js 的 Jest 偵錯指南,請參閱 docs/tests/jest.md。
我們的 e2e 測試套件可以在 Firefox 或 Chrome 上運行。以下是開始進行 e2e 測試的方法:
在執行 e2e 測試之前,請確保已執行yarn install
來下載相依性。接下來,您需要一個測試建置。您有 3 個選擇:
使用yarn download-builds:test
快速下載 Chrome 和 Firefox 的測試版本並將其解壓縮到./dist/
資料夾中。此方法快速、方便,且適合標準測試。
建立自訂測試建置:若要針對不同建置類型進行測試,請使用yarn build:test
。此命令可讓您產生各種類型的測試版本,包括:
yarn build:test
主構建
yarn build:test:flask
yarn build:test:mmi
用於 mmi 構建
yarn build:test:mv2
用於 mv2 構建
透過即時變更開始測試建置: yarn start:test
對於開發特別有用。它啟動一個測試構建,根據更改自動重新編譯應用程式程式碼。此選項非常適合迭代測試和開發。此命令還允許您產生各種類型的測試版本,包括:
yarn start:test
主構建
yarn start:test:flask
yarn start:test:mv2
用於 mv2 構建
注意: yarn start:test
命令(啟動 testDev 建置類型)已為建置系統和應用程式停用 LavaMoat,從而在開發過程中提供簡化的測試體驗。另一方面, yarn build:test
使 LavaMoat 能夠增強建置系統和應用程式的安全性,更緊密地反映生產環境。
準備好測試建置後,請選擇用於 e2e 測試的瀏覽器:
對於 Firefox,運行yarn test:e2e:firefox
。
注意:如果您在 Linux 上將 Firefox 作為快照套件運行,請確保啟用適當的環境變數: FIREFOX_SNAP=true yarn test:e2e:firefox
對於Chrome,運行yarn test:e2e:chrome
。
這些腳本支援額外的偵錯選項。使用--help
查看所有可用選項。
單一 e2e 測試可以使用yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
以及以下選項來執行。
--browser 設定使用的瀏覽器;指定“chrome”、“firefox”、“all”或保留未設定以預設在“all”上運行。 [string] [default: 'all'] --debug 在偵錯模式下執行測試,記錄每個驅動程式互動 [boolean] [default: true] --retries 設定失敗時應重試測試的次數。 [number] [預設值:0] --leave-running 在測試失敗後讓瀏覽器保持運行,以及測試使用的其他任何內容(ganache、測試 dapp 等)[boolean] [預設值:false] -- update -snapshot 更新E2E 測試快照[別名:-u] [布林值] [預設值:false]
例如,要使用 Chrome 執行account-details
測試,並設定偵錯日誌記錄並將瀏覽器設定為在失敗時保持開啟狀態,您可以使用: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
在開發新功能時,我們經常使用功能標誌。當我們準備好讓這些功能普遍可用 (GA) 時,我們刪除了功能標誌。現有功能標誌列在.metamaskrc.dist
檔案中。若要在啟用特定功能標誌的情況下執行 e2e 測試,必須先產生啟動該功能標誌的測試版本。有兩種方法可以實現此目的:
要在本機配置中啟用功能標誌,您應該先確保有一個從.metamaskrc.dist
複製的.metamaskrc
檔案。然後,在本機.metamaskrc
檔案中,您可以將所需的功能標誌設為 true。接下來,可以透過執行yarn build:test
來建立啟用了功能標誌的測試建置。
或者,要在測試建置建立期間直接啟用功能標誌,您可以透過命令列將參數傳遞為 true。例如,可以透過執行MULTICHAIN=1 yarn build:test
或MULTICHAIN=1 yarn start:test
來啟動 MULTICHAIN 功能標誌。此方法允許快速調整功能標誌,而無需更改.metamaskrc
檔案。
建立啟用所需功能標誌的測試版本後,繼續照常執行測試。您的測試現在將針對啟動了特定功能標誌的擴充版本運行。例如: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
這種方法可確保您的 e2e 測試準確反映即將推出的 GA 功能的使用者體驗。
不同的建置類型有不同的 e2e 測試集。為了運行它們,請查看package.json
檔案。你會發現:
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=chrome 節點 test/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=chrome 節點 test/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=firefox 節點test/e2e/run-all.js",
在 MMI 建置上執行 e2e 時,您需要知道有 2 組獨立的測試:
MMI 執行 MetaMask 的 e2e 測試的子集。為了實現這一點,我們將@no-mmi
標籤附加到不適用於此建置類型的那些測試的名稱中。
MMI 執行另一組特定的 e2e 遺留測試,此處有更好的記錄
每當您更改依賴項(在package.json
或yarn.lock
中新增、刪除或更新)時,都有各種檔案必須保持最新。
yarn.lock
:
更改後再次運行yarn
,以確保yarn.lock
已正確更新。
執行yarn lint:lockfile:dedupe:fix
以從鎖定檔案中刪除重複的依賴項。
package.json
中的allow-scripts
配置
運行yarn allow-scripts auto
以自動更新allow-scripts
配置。此配置決定是否允許執行包的安裝/安裝後腳本。檢查每個新套件以確定安裝腳本是否需要執行,並在必要時進行測試。
不幸的是, yarn allow-scripts auto
在不同平台上的行為不一致。 macOS 和 Windows 使用者可能會看到與選用相依性相關的無關變更。
LavaMoat 策略文件
LavaMoat 策略檔案有兩組:
每當您重新產生策略檔案時,請檢查變更以確定授予每個套件的存取權限是否適當。
不幸的是, yarn lavamoat:auto
在不同平台上的行為不一致。 macOS 和 Windows 使用者可能會看到與選用相依性相關的無關變更。
如果即使在重新產生策略檔案後仍然出現策略失敗,請嘗試在全新安裝後重新產生策略,方法是:
請記住,任何類型的動態匯入或動態使用全域變數都可能逃避 LavaMoat 的靜態分析。如果遇到任何問題,請參閱 LavaMoat 文件或尋求協助。
每當建置系統本身使用的依賴項發生變化時,就應該重新產生它。
只要 Web 應用程式的生產相依性發生變化,就應該重新產生這些內容。
生產 LavaMoat 策略文件 ( lavamoat/browserify/*/policy.json
),使用yarn lavamoat:webapp:auto
重新產生。新增--help
以供使用。
建置系統 LavaMoat 策略檔案 ( lavamoat/build-system/policy.json
),使用yarn lavamoat:build:auto
重新產生。
rm -rf node_modules/ && yarn && yarn lavamoat:auto
如果您是 MetaMask 團隊成員並且您的 PR 位於儲存庫分支上,則可以使用機器人命令@metamaskbot update-policies
要求 MetaMask 機器人自動為您更新策略。
如果您的 PR 來自分叉,您可以請 MetaMask 團隊成員協助更新策略檔案。
手動更新說明: tl;dr是運行yarn lavamoat:auto
來更新這些文件,但細節可能有問題:
屬性檔案
如果您是 MetaMask 團隊成員並且您的 PR 位於儲存庫分支上,則可以使用機器人命令@metamaskbot update-attributions
要求 MetaMask 機器人自動為您更新屬性檔案。
手動更新:運行yarn attributions:generate
。
截至 2022 年夏季的控制器層次結構和依賴關係的可視化。
整個程式碼庫的視覺效果。
如何為 MetaMask 新增翻譯
出版指南
如何使用 TREZOR 模擬器
在 MetaMask 上開發
如何產生該存儲庫開發的可視化
如何新增新的確認訊息
瀏覽器支援指南
使用 MetaMask Snap 擴充 MetaMask 的功能。
提示您的用戶新增並切換到新網路。
變更當您的 dapp 連接到 MetaMask 時出現的徽標。