Puede encontrar la última versión de MetaMask en nuestro sitio web oficial. Para obtener ayuda con el uso de MetaMask, visite nuestro sitio de asistencia al usuario.
Para preguntas generales, solicitudes de funciones o preguntas de desarrolladores, visite nuestro Foro de la comunidad.
MetaMask es compatible con los navegadores basados en Firefox, Google Chrome y Chromium. Recomendamos utilizar la última versión disponible del navegador.
Para conocer las últimas novedades, síguenos en X.
Para aprender cómo desarrollar aplicaciones compatibles con MetaMask, visite nuestros Documentos para desarrolladores.
Para saber cómo contribuir al código base de MetaMask, visite nuestros Documentos para colaboradores.
Para saber cómo contribuir al proyecto de extensión MetaMask, visite nuestros Documentos de extensión.
Como alternativa a la creación en su máquina local, existe una nueva opción para poner en funcionamiento un entorno de desarrollo en menos de 5 minutos mediante el uso de GitHub Codespaces. Tenga en cuenta que hay una cuota mensual gratuita limitada y, después de eso, GitHub comenzará a cobrarle.
Nota: Se le factura tanto por el tiempo dedicado a la ejecución como por el almacenamiento utilizado.
Comience haciendo clic en el botón de arriba
Se abrirá una nueva pestaña del navegador con una versión remota de Visual Studio Code (esto tardará unos minutos en cargarse)
Se abrirá un "Navegador simple" dentro del navegador con noVNC: haga clic en Conectar
Haga clic en el botón en la esquina superior derecha de la pestaña Navegador simple para abrir la ventana noVNC en su propia pestaña
Abra la barra lateral de noVNC a la izquierda, haga clic en el ícono de ajustes, cambie el modo de escala a cambio de tamaño remoto
Pasos opcionales:
Espere unos 20 segundos más en el primer inicio para que finalicen los scripts.
Haga clic derecho en el escritorio noVNC para iniciar Chrome o Firefox con MetaMask preinstalado
Cambie algo de código, luego ejecute yarn start
para compilar en modo de desarrollo.
Después de uno o dos minutos, terminará de compilarse y podrá ver los cambios en el escritorio de noVNC.
Se le factura tanto por el tiempo dedicado a la ejecución como por el almacenamiento utilizado.
Los codespaces se pausan después de 30 minutos de inactividad y se eliminan automáticamente después de 30 días de inactividad
Puedes administrar tus Codespaces aquí: https://github.com/codespaces
Es posible que desees pausarlos manualmente antes del tiempo de espera de 30 minutos.
Si tiene varios Codespaces inactivos durante varios días, puede quedarse rápidamente sin cuota de almacenamiento. Deberías eliminar los que ya no planeas usar y probablemente conservar solo 1 o 2 a largo plazo. También es posible reutilizar Codespaces antiguos y cambiar de rama, en lugar de crear nuevos y eliminar los antiguos.
Si no es un desarrollador interno de MetaMask o está desarrollando en una bifurcación, la clave predeterminada de Infura estará en el plan gratuito y tendrá solicitudes por segundo muy limitadas. Si desea utilizar su propia clave Infura, siga las instrucciones .metamaskrc
e INFURA_PROJECT_ID
en la sección Construyendo en su máquina local.
Instalar Node.js versión 20
Si está utilizando nvm (recomendado), ejecutar nvm use
elegirá automáticamente la versión de nodo adecuada para usted.
Habilite Corepack ejecutando el comando corepack enable
dentro del proyecto de extensión metamask. Corepack es una utilidad incluida con Node.js de forma predeterminada. Administra Yarn por proyecto, utilizando la versión especificada por la propiedad packageManager
en el archivo package.json del proyecto. Tenga en cuenta que las versiones modernas de Yarn no están diseñadas para instalarse globalmente ni a través de npm.
Duplique .metamaskrc.dist
dentro de la raíz y cámbiele el nombre a .metamaskrc
ejecutando cp .metamaskrc{.dist,}
.
Si no tiene una cuenta de Infura, puede crear una de forma gratuita en el sitio web de Infura.
Reemplace el valor INFURA_PROJECT_ID
con su propia clave API personal de Infura.
Si depura MetaMetrics, deberá agregar un valor para SEGMENT_WRITE_KEY
Clave de escritura del segmento; consulte Desarrollo en MetaMask - Segmento.
Si depura excepciones no controladas, deberá agregar un valor para SENTRY_DSN
Sentry Dsn; consulte Desarrollo en MetaMask - Sentry.
Opcionalmente, reemplace el valor PASSWORD
con la contraseña de su billetera de desarrollo para evitar ingresarla cada vez que abra la aplicación.
Ejecute yarn install
para instalar las dependencias.
Cree el proyecto en la carpeta ./dist/
con yarn dist
(para navegadores basados en Chromium) o yarn dist:mv2
(para Firefox)
Opcionalmente, para crear una compilación de desarrollo, puede ejecutar yarn start
(para navegadores basados en Chromium) o yarn start:mv2
(para Firefox).
Las compilaciones sin comprimir se pueden encontrar en /dist
, las compilaciones comprimidas se pueden encontrar en /builds
una vez compiladas.
Consulte el archivo Léame del sistema de compilación para obtener información sobre el uso del sistema de compilación.
Siga estas instrucciones para verificar que su compilación local se ejecute correctamente:
Cómo agregar una compilación personalizada a Chrome
Cómo agregar una compilación personalizada a Firefox
Para obtener comentarios rápidos de nuestras funciones de fitness de calidad de código compartido antes de enviar el código, puede instalar nuestros git hooks con Husky.
$ yarn githooks:install
Puede leer más sobre ellos en nuestra documentación de prueba.
Si está utilizando VS Code y no puede realizar confirmaciones desde la barra lateral de control de fuente debido a un error de "comando no encontrado", pruebe estos pasos de los documentos de Husky.
Para iniciar una compilación de desarrollo (por ejemplo, con registro y visualización de archivos), ejecute yarn start
.
Puede iniciar una compilación de desarrollo con un estado de billetera precargado agregando TEST_SRP='
y PASSWORD='
al archivo .metamaskrc
. Entonces tienes las siguientes opciones:
Inicie la billetera con los indicadores predeterminados del dispositivo, ejecutando yarn start:with-state
.
Verifique la lista de indicadores de dispositivos disponibles ejecutando yarn start:with-state --help
.
Inicie la billetera con indicadores de accesorios personalizados, ejecutando yarn start:with-state --FIXTURE_NAME=VALUE
por ejemplo yarn start:with-state --withAccounts=100
. Puedes pasar tantas banderas como quieras. El resto de aparatos tomarán los valores predeterminados.
También puede iniciar una compilación de desarrollo utilizando el comando yarn webpack
o yarn webpack --watch
. Esto utiliza un sistema de compilación alternativo que es mucho más rápido, pero aún no está listo para producción. Consulte el archivo README de Webpack para obtener más información.
Para iniciar React DevTools, ejecute yarn devtools:react
con una compilación de desarrollo instalada en un navegador. Esto se abrirá en una ventana separada; no se requiere ninguna extensión del navegador.
Para iniciar la extensión Redux DevTools:
Instale el paquete remotedev-server
globalmente (p. ej. yarn global add remotedev-server
)
Instale la extensión Redux Devtools.
Abra la extensión Redux DevTools y marque la casilla de verificación "Usar servidor personalizado (local)" en la Configuración remota de DevTools, usando la configuración predeterminada del servidor (host localhost
, puerto 8000
, casilla de conexión segura sin marcar).
Luego ejecute el comando yarn devtools:redux
con una compilación de desarrollo instalada en un navegador. Esto le permitirá utilizar la extensión Redux DevTools para inspeccionar MetaMask.
Para crear una compilación de desarrollo y ejecutar ambas herramientas simultáneamente, ejecute yarn start:dev
.
Este sitio de prueba se puede utilizar para ejecutar diferentes flujos de usuarios.
Ejecute pruebas unitarias y la yarn test
. Para ejecutar solo pruebas unitarias, ejecute yarn test:unit
.
Puede ejecutar el linter por sí solo con yarn lint
y puede solucionar automáticamente algunos problemas de pelusa con yarn lint:fix
. También puede ejecutar estos dos comandos solo en sus cambios locales para ahorrar tiempo con yarn lint:changed
y yarn lint:changed:fix
respectivamente.
Para obtener la guía de depuración de Jest usando Node.js, consulte docs/tests/jest.md.
Nuestro conjunto de pruebas e2e se puede ejecutar en Firefox o Chrome. A continuación se explica cómo comenzar con las pruebas e2e:
Antes de ejecutar las pruebas de e2e, asegúrese de haber ejecutado yarn install
para descargar las dependencias. A continuación, necesitará una compilación de prueba. Tienes 3 opciones:
Utilice yarn download-builds:test
para descargar y descomprimir rápidamente compilaciones de prueba para Chrome y Firefox en la carpeta ./dist/
. Este método es rápido y conveniente para pruebas estándar.
Cree una compilación de prueba personalizada: para realizar pruebas con diferentes tipos de compilación, use yarn build:test
. Este comando le permite generar compilaciones de prueba para varios tipos, que incluyen:
yarn build:test
para la construcción principal
yarn build:test:flask
para construcción de matraz
yarn build:test:mmi
para compilación mmi
yarn build:test:mv2
para compilación mv2
Inicie una compilación de prueba con cambios en vivo: yarn start:test
es particularmente útil para el desarrollo. Inicia una compilación de prueba que vuelve a compilar automáticamente el código de la aplicación tras los cambios. Esta opción es ideal para pruebas y desarrollo iterativos. Este comando también le permite generar compilaciones de prueba para varios tipos, que incluyen:
yarn start:test
para la construcción principal
yarn start:test:flask
para la construcción del matraz
yarn start:test:mv2
para la compilación mv2
Nota: El comando yarn start:test
(que inicia el tipo de compilación testDev) tiene LavaMoat deshabilitado tanto para el sistema de compilación como para la aplicación, lo que ofrece una experiencia de prueba optimizada durante el desarrollo. Por otro lado, yarn build:test
permite a LavaMoat mejorar la seguridad tanto en el sistema de construcción como en la aplicación, reflejando más fielmente los entornos de producción.
Una vez que tenga lista su versión de prueba, elija el navegador para sus pruebas e2e:
Para Firefox, ejecute yarn test:e2e:firefox
.
Nota: Si está ejecutando Firefox como un paquete instantáneo en Linux, asegúrese de habilitar la variable de entorno adecuada: FIREFOX_SNAP=true yarn test:e2e:firefox
Para Chrome, ejecute yarn test:e2e:chrome
.
Estos scripts admiten opciones adicionales de depuración. Utilice --help
para ver todas las opciones disponibles.
Las pruebas e2e individuales se pueden ejecutar con yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
junto con las siguientes opciones.
--browser Establece el navegador que se utilizará; especifique 'chrome', 'firefox', 'todos' o déjelo sin configurar para ejecutarse en 'todos' de forma predeterminada. [cadena] [predeterminado: 'todos'] --debug Ejecuta pruebas en modo de depuración, registrando cada interacción del controlador [booleano] [predeterminado: verdadero] --retries Establece cuántas veces se debe reintentar la prueba en caso de falla. [número] [predeterminado: 0] --leave-running Deja el navegador ejecutándose después de que falla una prueba, junto con cualquier otra cosa que haya utilizado la prueba (ganache, el dapp de prueba, etc.) [booleano] [predeterminado: falso] -- update-snapshot Actualizar instantáneas de prueba E2E [alias: -u] [booleano] [predeterminado: falso]
Por ejemplo, para ejecutar las pruebas account-details
usando Chrome, con el registro de depuración y con el navegador configurado para permanecer abierto en caso de falla, usaría: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
Mientras desarrollamos nuevas funciones, a menudo utilizamos indicadores de funciones. Mientras nos preparamos para que estas funciones estén disponibles de forma generalizada (GA), eliminamos las marcas de funciones. Los indicadores de funciones existentes se enumeran en el archivo .metamaskrc.dist
. Para ejecutar pruebas e2e con un indicador de característica particular habilitado, primero es necesario generar una compilación de prueba con ese indicador de característica activado. Hay dos maneras de lograr esto:
Para habilitar un indicador de función en su configuración local, primero debe asegurarse de tener un archivo .metamaskrc
copiado de .metamaskrc.dist
. Luego, dentro de su archivo .metamaskrc
local, puede establecer el indicador de función deseado en verdadero. Después de esto, se puede crear una compilación de prueba con el indicador de función habilitado ejecutando yarn build:test
.
Alternativamente, para habilitar un indicador de función directamente durante la creación de la compilación de prueba, puede pasar el parámetro como verdadero a través de la línea de comando. Por ejemplo, la activación del indicador de función MULTICHAIN se puede realizar ejecutando MULTICHAIN=1 yarn build:test
o MULTICHAIN=1 yarn start:test
. Este método permite realizar ajustes rápidos a las banderas de características sin alterar el archivo .metamaskrc
.
Una vez que haya creado una compilación de prueba con el indicador de función deseado habilitado, proceda a ejecutar las pruebas como de costumbre. Sus pruebas ahora se ejecutarán en la versión de la extensión con el indicador de función específica activado. Por ejemplo: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
Este enfoque garantiza que sus pruebas e2e reflejen con precisión la experiencia del usuario para las próximas funciones de GA.
Los diferentes tipos de compilación tienen diferentes conjuntos de pruebas e2e. Para ejecutarlos, busque en el archivo package.json
. Encontrarás:
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=prueba de nodo de Chrome/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=prueba de nodo de Chrome/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=prueba de nodo de Firefox/e2e/run-all.js",
Al ejecutar e2e en una compilación MMI, debe saber que hay 2 conjuntos de pruebas separados:
MMI ejecuta un subconjunto de pruebas e2e de MetaMask. Para facilitar esto, hemos agregado las etiquetas @no-mmi
a los nombres de aquellas pruebas que no son aplicables a este tipo de compilación.
MMI ejecuta otro conjunto específico de pruebas heredadas de e2e que están mejor documentadas aquí
Siempre que cambia dependencias (agregando, eliminando o actualizando, ya sea en package.json
o yarn.lock
), hay varios archivos que deben mantenerse actualizados.
yarn.lock
:
Ejecute yarn
nuevamente después de realizar los cambios para asegurarse de que yarn.lock
se haya actualizado correctamente.
Ejecute yarn lint:lockfile:dedupe:fix
para eliminar dependencias duplicadas del archivo de bloqueo.
La configuración de allow-scripts
en package.json
Ejecute yarn allow-scripts auto
para actualizar la configuración de allow-scripts
automáticamente. Esta configuración determina si se permite ejecutar los scripts de instalación/postinstalación del paquete. Revise cada paquete nuevo para determinar si es necesario ejecutar el script de instalación o no, probándolo si es necesario.
Desafortunadamente, yarn allow-scripts auto
se comportará de manera inconsistente en diferentes plataformas. Los usuarios de macOS y Windows pueden ver cambios extraños relacionados con dependencias opcionales.
Los archivos de políticas de LavaMoat
Hay dos conjuntos de archivos de políticas de LavaMoat:
Siempre que vuelva a generar un archivo de política, revise los cambios para determinar si el acceso otorgado a cada paquete parece apropiado.
Desafortunadamente, yarn lavamoat:auto
se comportará de manera inconsistente en diferentes plataformas. Los usuarios de macOS y Windows pueden ver cambios extraños relacionados con dependencias opcionales.
Si sigue obteniendo fallas en las políticas incluso después de regenerar los archivos de políticas, intente regenerar las políticas después de una instalación limpia haciendo lo siguiente:
Tenga en cuenta que cualquier tipo de importación dinámica o uso dinámico de globales puede eludir el análisis estático de LavaMoat. Consulte la documentación de LavaMoat o solicite ayuda si tiene algún problema.
Esto debe regenerarse cada vez que cambien las dependencias utilizadas por el propio sistema de compilación.
Estos deben regenerarse cada vez que cambien las dependencias de producción de la aplicación web.
Los archivos de políticas de LavaMoat de producción ( lavamoat/browserify/*/policy.json
), que se vuelven a generar utilizando yarn lavamoat:webapp:auto
. Agregue --help
para su uso.
El archivo de política LavaMoat del sistema de compilación ( lavamoat/build-system/policy.json
), que se vuelve a generar utilizando yarn lavamoat:build:auto
.
rm -rf node_modules/ && yarn && yarn lavamoat:auto
Si es miembro del equipo MetaMask y su PR está en una rama del repositorio, puede usar el comando del bot @metamaskbot update-policies
para pedirle al bot MetaMask que actualice automáticamente las políticas por usted.
Si su PR proviene de una bifurcación, puede pedirle ayuda a un miembro del equipo de MetaMask para actualizar los archivos de políticas.
Instrucciones de actualización manual: tl;dr es ejecutar yarn lavamoat:auto
para actualizar estos archivos, pero puede haber problemas en los detalles:
El archivo de Atribuciones
Si es miembro del equipo MetaMask y su PR está en una rama del repositorio, puede usar el comando del bot @metamaskbot update-attributions
para pedirle al bot MetaMask que actualice automáticamente el archivo de atribuciones por usted.
Actualización manual: ejecute yarn attributions:generate
.
Visual de la jerarquía y dependencias del controlador a partir del verano de 2022.
Visual de todo el código base.
Cómo agregar una nueva traducción a MetaMask
Guía de publicación
Cómo utilizar el emulador TREZOR
Desarrollando en MetaMask
Cómo generar una visualización del desarrollo de este repositorio
Cómo agregar nuevas confirmaciones
Directrices de soporte del navegador
Amplíe las funciones de MetaMask con MetaMask Snaps.
Solicite a sus usuarios que agreguen y cambien a una nueva red.
Cambie el logotipo que aparece cuando su dapp se conecta a MetaMask.