공식 웹사이트에서 MetaMask의 최신 버전을 찾으실 수 있습니다. MetaMask 사용에 대한 도움을 받으려면 사용자 지원 사이트를 방문하세요.
일반적인 질문, 기능 요청 또는 개발자 질문이 있는 경우 커뮤니티 포럼을 방문하세요.
MetaMask는 Firefox, Google Chrome 및 Chromium 기반 브라우저를 지원합니다. 사용 가능한 최신 브라우저 버전을 사용하는 것이 좋습니다.
최신 뉴스를 보려면 X에서 우리를 팔로우하세요.
MetaMask 호환 애플리케이션을 개발하는 방법을 알아보려면 개발자 문서를 방문하세요.
MetaMask 코드베이스에 기여하는 방법을 알아보려면 기여자 문서를 방문하세요.
MetaMask Extension 프로젝트 자체에 기여하는 방법을 알아보려면 Extension Docs를 방문하세요.
로컬 머신에서 구축하는 대신 GitHub Codespaces를 사용하여 5분 이내에 개발 환경을 시작하고 실행할 수 있는 새로운 옵션이 있습니다. 월간 무료 할당량이 제한되어 있으며 그 이후에는 GitHub에서 요금을 청구하기 시작합니다.
참고: 실행에 소요된 시간과 사용한 스토리지에 대해 요금이 청구됩니다.
위의 버튼을 클릭하여 시작하세요.
Visual Studio Code의 원격 버전으로 새 브라우저 탭이 열립니다(로드하는 데 몇 분 정도 소요됩니다).
noVNC가 있는 브라우저 내에서 "간단한 브라우저"가 열립니다. 연결을 클릭하세요.
Simple Browser 탭의 오른쪽 상단에 있는 버튼을 클릭하여 자체 탭에서 noVNC 창을 엽니다.
왼쪽의 noVNC 사이드바를 열고 기어 아이콘을 클릭한 후 스케일링 모드를 원격 크기 조정으로 변경하세요.
선택적 단계:
처음 실행 시 스크립트가 완료될 때까지 약 20초 더 기다립니다.
noVNC 데스크탑을 마우스 오른쪽 버튼으로 클릭하여 MetaMask가 사전 설치된 Chrome 또는 Firefox를 실행하세요.
일부 코드를 변경한 다음, 개발 모드에서 빌드하려면 yarn start
실행하세요.
1~2분 후에 빌드가 완료되고 noVNC 데스크탑에서 변경 사항을 볼 수 있습니다.
실행에 소요된 시간과 사용한 저장용량에 대해 요금이 청구됩니다.
Codespace는 30분 동안 활동이 없으면 일시 중지되고 30일 동안 활동이 없으면 자동 삭제됩니다.
여기에서 Codespaces를 관리할 수 있습니다: https://github.com/codespaces
30분 시간이 초과되기 전에 수동으로 일시중지할 수 있습니다.
며칠 동안 유휴 Codespace가 여러 개 있으면 스토리지 할당량이 빠르게 부족해질 수 있습니다. 더 이상 사용하지 않을 것은 삭제하고, 장기적으로는 1~2개 정도만 보관하는 것이 좋습니다. 새 Codespace를 만들고 이전 Codespace를 삭제하는 대신 이전 Codespace를 재사용하고 분기를 전환하는 것도 가능합니다.
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
에서 찾을 수 있습니다.
빌드 시스템 사용 정보는 빌드 시스템 Readme를 참조하세요.
로컬 빌드가 올바르게 실행되는지 확인하려면 다음 지침을 따르세요.
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 README를 참조하세요.
React DevTools를 시작하려면 브라우저에 설치된 개발 빌드로 yarn devtools:react
실행하세요. 별도의 창에서 열립니다. 브라우저 확장이 필요하지 않습니다.
Redux DevTools 확장을 시작하려면:
패키지 remotedev-server
전역적으로 설치합니다(예: yarn global add remotedev-server
).
Redux Devtools 확장을 설치합니다.
Redux DevTools 확장을 열고 Remote DevTools 설정에서 기본 서버 구성(호스트 localhost
, 포트 8000
, 보안 연결 확인란 선택 취소)을 사용하여 "사용자 정의(로컬) 서버 사용" 확인란을 선택합니다.
그런 다음 브라우저에 설치된 개발 빌드를 사용하여 yarn devtools:redux
명령을 실행합니다. 이렇게 하면 Redux DevTools 확장을 사용하여 MetaMask를 검사할 수 있습니다.
개발 빌드를 생성하고 두 도구를 동시에 실행하려면 yarn start:dev
실행하세요.
이 테스트 사이트는 다양한 사용자 흐름을 실행하는 데 사용될 수 있습니다.
yarn test
사용하여 단위 테스트와 linter를 실행합니다. 단위 테스트만 실행하려면 yarn test:unit
실행하세요.
yarn lint
사용하여 Linter를 자체적으로 실행할 수 있으며, yarn lint:fix
사용하여 일부 린트 문제를 자동으로 수정할 수 있습니다. 또한 로컬 변경 사항에 대해서만 이 두 명령을 실행하여 각각 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
mv2 빌드의 경우 yarn build:test:mv2
실시간 변경 사항으로 테스트 빌드 시작: yarn start:test
개발에 특히 유용합니다. 변경 시 애플리케이션 코드를 자동으로 다시 컴파일하는 테스트 빌드를 시작합니다. 이 옵션은 반복적인 테스트 및 개발에 이상적입니다. 또한 이 명령을 사용하면 다음을 포함한 다양한 유형에 대한 테스트 빌드를 생성할 수 있습니다.
yarn start:test
yarn start:test:flask
mv2 빌드의 경우 yarn start:test:mv2
참고: testDev 빌드 유형을 시작하는 yarn start:test
명령은 빌드 시스템과 애플리케이션 모두에 대해 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 실패 시 테스트를 재시도해야 하는 횟수를 설정합니다. [숫자] [기본값: 0] --leave-running 테스트에 사용된 다른 모든 것(ganache, 테스트 Dapp 등)과 함께 테스트가 실패한 후 브라우저를 계속 실행합니다. [boolean] [기본값: false] -- update-snapshot E2E 테스트 스냅샷 업데이트 [별칭: -u] [boolean] [기본값: false]
예를 들어, 디버그 로깅과 실패 시 열려 있는 브라우저 설정을 통해 Chrome을 사용하여 account-details
테스트를 실행하려면 yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
사용합니다. 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 기능 플래그를 활성화하려면 MULTICHAIN=1 yarn build:test
또는 MULTICHAIN=1 yarn start:test
실행하면 됩니다. 이 방법을 사용하면 .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 노드 테스트/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=chrome 노드 테스트/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=firefox 노드 테스트/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
구성
allow-scripts
구성을 자동으로 업데이트하려면 yarn allow-scripts auto
을 실행하세요. 이 구성은 패키지의 설치/설치 후 스크립트 실행이 허용되는지 여부를 결정합니다. 각각의 새 패키지를 검토하여 설치 스크립트를 실행해야 하는지 여부를 결정하고 필요한 경우 테스트합니다.
불행하게도 yarn allow-scripts auto
다른 플랫폼에서 일관되지 않게 작동합니다. macOS 및 Windows 사용자는 선택적 종속성과 관련하여 불필요한 변경 사항을 볼 수 있습니다.
LavaMoat 정책 파일
LavaMoat 정책 파일에는 두 가지 세트가 있습니다.
정책 파일을 다시 생성할 때마다 변경 사항을 검토하여 각 패키지에 부여된 액세스 권한이 적절한지 확인하십시오.
불행하게도 yarn lavamoat:auto
다양한 플랫폼에서 일관되지 않게 작동합니다. macOS 및 Windows 사용자는 선택적 종속성과 관련하여 불필요한 변경 사항을 볼 수 있습니다.
정책 파일을 다시 생성한 후에도 정책 오류가 계속 발생하는 경우 새로 설치한 후 다음을 수행하여 정책을 다시 생성해 보세요.
모든 종류의 동적 가져오기 또는 전역 변수의 동적 사용은 LavaMoat의 정적 분석을 피할 수 있다는 점을 명심하세요. 문제가 발생하면 LavaMoat 설명서를 참조하거나 도움을 요청하세요.
이는 빌드 시스템 자체에서 사용하는 종속성이 변경될 때마다 다시 생성되어야 합니다.
이는 웹앱의 프로덕션 종속성이 변경될 때마다 다시 생성되어야 합니다.
yarn lavamoat:webapp:auto
사용하여 다시 생성되는 프로덕션 LavaMoat 정책 파일( lavamoat/browserify/*/policy.json
). 사용법을 위해 --help
추가하세요.
yarn lavamoat:build:auto
사용하여 다시 생성되는 빌드 시스템 LavaMoat 정책 파일( lavamoat/build-system/policy.json
).
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에 연결될 때 나타나는 로고를 변경하세요.