Vous pouvez trouver la dernière version de MetaMask sur notre site officiel. Pour obtenir de l'aide sur l'utilisation de MetaMask, visitez notre site d'assistance utilisateur.
Pour des questions générales, des demandes de fonctionnalités ou des questions de développeurs, visitez notre forum communautaire.
MetaMask prend en charge les navigateurs basés sur Firefox, Google Chrome et Chromium. Nous vous recommandons d'utiliser la dernière version disponible du navigateur.
Pour les dernières nouvelles, suivez-nous sur X.
Pour savoir comment développer des applications compatibles MetaMask, visitez nos documents pour développeurs.
Pour savoir comment contribuer à la base de code MetaMask, visitez nos documents de contribution.
Pour savoir comment contribuer au projet MetaMask Extension lui-même, visitez nos documents d'extension.
Au lieu de créer sur votre machine locale, il existe une nouvelle option permettant de rendre opérationnel un environnement de développement en moins de 5 minutes à l'aide des espaces de codes GitHub. Veuillez noter qu'il existe un quota mensuel gratuit limité, après quoi GitHub commencera à vous facturer.
Remarque : Vous êtes facturé à la fois pour le temps passé à exécuter et pour le stockage utilisé.
Commencez par cliquer sur le bouton ci-dessus
Un nouvel onglet de navigateur s'ouvrira avec une version distante de Visual Studio Code (cela prendra quelques minutes à charger)
Un "navigateur simple" s'ouvrira dans le navigateur avec noVNC - cliquez sur Connecter
Cliquez sur le bouton en haut à droite de l'onglet Navigateur simple pour ouvrir la fenêtre noVNC dans son propre onglet
Ouvrez la barre latérale noVNC sur la gauche, cliquez sur l'icône d'engrenage, changez le mode de mise à l'échelle en redimensionnement à distance
Étapes facultatives :
Attendez environ 20 secondes supplémentaires au premier lancement, pour que les scripts se terminent
Faites un clic droit sur le bureau noVNC pour lancer Chrome ou Firefox avec MetaMask préinstallé
Modifiez du code, puis exécutez yarn start
pour construire en mode développement
Après une minute ou deux, la construction sera terminée et vous pourrez voir vos modifications sur le bureau noVNC.
Vous êtes facturé à la fois pour le temps passé à exécuter et pour le stockage utilisé
Les espaces de codes se mettent en pause après 30 minutes d'inactivité et se suppriment automatiquement après 30 jours d'inactivité.
Vous pouvez gérer vos Codespaces ici : https://github.com/codespaces
Vous souhaiterez peut-être les mettre manuellement en pause avant le délai d'attente de 30 minutes.
Si vous disposez de plusieurs Codespaces inactifs pendant plusieurs jours, vous pouvez rapidement manquer de quota de stockage. Vous devez supprimer ceux que vous ne comptez plus utiliser, et probablement n’en conserver qu’1 ou 2 à long terme. Il est également possible de réutiliser d'anciens Codespaces et de changer de branche, au lieu d'en créer de nouveaux et de supprimer les anciens.
Si vous n'êtes pas un développeur interne MetaMask ou si vous développez sur un fork, la clé Infura par défaut sera sur le plan gratuit et aura des requêtes par seconde très limitées. Si vous souhaitez utiliser votre propre clé Infura, suivez les instructions .metamaskrc
et INFURA_PROJECT_ID
dans la section Construire sur votre machine locale.
Installer Node.js version 20
Si vous utilisez nvm (recommandé), l'exécution nvm use
choisira automatiquement la version de nœud qui vous convient.
Activez Corepack en exécutant la commande corepack enable
dans le projet d'extension métamask. Corepack est un utilitaire inclus avec Node.js par défaut. Il gère Yarn projet par projet, en utilisant la version spécifiée par la propriété packageManager
dans le fichier package.json du projet. Veuillez noter que les versions modernes de Yarn ne sont pas destinées à être installées globalement ou via npm.
Dupliquez .metamaskrc.dist
à la racine et renommez-le en .metamaskrc
en exécutant cp .metamaskrc{.dist,}
.
Si vous n'avez pas de compte Infura, vous pouvez en créer un gratuitement sur le site Infura.
Remplacez la valeur INFURA_PROJECT_ID
par votre propre clé API Infura personnelle.
Si vous déboguez MetaMetrics, vous devrez ajouter une valeur pour la clé d'écriture du segment SEGMENT_WRITE_KEY
, voir Développement sur MetaMask - Segment.
Si vous déboguez des exceptions non gérées, vous devrez ajouter une valeur pour SENTRY_DSN
Sentry Dsn, voir Développement sur MetaMask - Sentry.
Vous pouvez éventuellement remplacer la valeur PASSWORD
par le mot de passe de votre portefeuille de développement pour éviter de le saisir à chaque fois que vous ouvrez l'application.
Exécutez yarn install
pour installer les dépendances.
Créez le projet dans le dossier ./dist/
avec yarn dist
(pour les navigateurs basés sur Chromium) ou yarn dist:mv2
(pour Firefox)
Facultativement, pour créer une version de développement, vous pouvez à la place exécuter yarn start
(pour les navigateurs basés sur Chromium) ou yarn start:mv2
(pour Firefox).
Les builds non compressés peuvent être trouvés dans /dist
, les builds compressés peuvent être trouvés dans /builds
une fois qu'ils sont construits.
Consultez le fichier Lisez-moi du système de build pour obtenir des informations sur l'utilisation du système de build.
Suivez ces instructions pour vérifier que votre build locale s'exécute correctement :
Comment ajouter une version personnalisée à Chrome
Comment ajouter une version personnalisée à Firefox
Pour obtenir un retour rapide sur nos fonctions de fitness partagées sur la qualité du code avant de valider le code, vous pouvez installer nos git hooks avec Husky.
$ yarn githooks:install
Vous pouvez en savoir plus à leur sujet dans notre documentation de test.
Si vous utilisez VS Code et que vous ne parvenez pas à effectuer des validations à partir de la barre latérale du contrôle de source en raison d'une erreur « commande introuvable », essayez ces étapes à partir de la documentation Husky.
Pour démarrer une version de développement (par exemple avec journalisation et surveillance des fichiers), exécutez yarn start
.
Vous pouvez démarrer une version de développement avec un état de portefeuille préchargé, en ajoutant TEST_SRP='<insert SRP here>'
et PASSWORD='<insert wallet password here>'
au fichier .metamaskrc
. Ensuite, vous disposez des options suivantes :
Démarrez le portefeuille avec les indicateurs de luminaire par défaut, en exécutant yarn start:with-state
.
Vérifiez la liste des indicateurs de luminaire disponibles en exécutant yarn start:with-state --help
.
Démarrez le portefeuille avec des indicateurs de luminaire personnalisés, en exécutant yarn start:with-state --FIXTURE_NAME=VALUE
par exemple yarn start:with-state --withAccounts=100
. Vous pouvez passer autant de drapeaux que vous le souhaitez. Le reste des appareils prendront les valeurs par défaut.
Vous pouvez également démarrer une version de développement à l'aide de la commande yarn webpack
ou yarn webpack --watch
. Cela utilise un système de construction alternatif qui est beaucoup plus rapide, mais pas encore prêt pour la production. Consultez le README du Webpack pour plus d’informations.
Pour démarrer React DevTools, exécutez yarn devtools:react
avec une version de développement installée dans un navigateur. Cela s'ouvrira dans une fenêtre séparée ; aucune extension de navigateur n'est requise.
Pour démarrer l'extension Redux DevTools :
Installez le package remotedev-server
globalement (par exemple, yarn global add remotedev-server
)
Installez l'extension Redux Devtools.
Ouvrez l'extension Redux DevTools et cochez la case "Utiliser un serveur personnalisé (local)" dans les paramètres Remote DevTools, en utilisant la configuration du serveur par défaut (hôte localhost
, port 8000
, case de connexion sécurisée décochée).
Exécutez ensuite la commande yarn devtools:redux
avec une version de développement installée dans un navigateur. Cela vous permettra d'utiliser l'extension Redux DevTools pour inspecter MetaMask.
Pour créer une version de développement et exécuter ces deux outils simultanément, exécutez yarn start:dev
.
Ce site de test peut être utilisé pour exécuter différents flux utilisateurs.
Exécutez les tests unitaires et le linter avec yarn test
. Pour exécuter uniquement des tests unitaires, exécutez yarn test:unit
.
Vous pouvez exécuter le linter seul avec yarn lint
, et vous pouvez résoudre automatiquement certains problèmes de charpie avec yarn lint:fix
. Vous pouvez également exécuter ces deux commandes uniquement sur vos modifications locales pour gagner du temps avec yarn lint:changed
et yarn lint:changed:fix
respectivement.
Pour le guide de débogage Jest utilisant Node.js, voir docs/tests/jest.md.
Notre suite de tests e2e peut être exécutée sur Firefox ou Chrome. Voici comment démarrer avec les tests e2e :
Avant d'exécuter les tests e2e, assurez-vous d'avoir exécuté yarn install
pour télécharger les dépendances. Ensuite, vous aurez besoin d’une version de test. Vous avez 3 options :
Utilisez yarn download-builds:test
pour télécharger et décompresser rapidement les versions de test pour Chrome et Firefox dans le dossier ./dist/
. Cette méthode est rapide et pratique pour les tests standards.
Créez une version de test personnalisée : pour tester différents types de build, utilisez yarn build:test
. Cette commande vous permet de générer des versions de test pour différents types, notamment :
yarn build:test
pour la version principale
yarn build:test:flask
pour la construction de flacon
yarn build:test:mmi
pour la construction mmi
yarn build:test:mv2
pour la construction mv2
Démarrez une version de test avec des modifications en direct : yarn start:test
est particulièrement utile pour le développement. Il démarre une version de test qui recompile automatiquement le code de l'application en cas de modifications. Cette option est idéale pour les tests et le développement itératifs. Cette commande vous permet également de générer des versions de test pour différents types, notamment :
yarn start:test
pour la version principale
yarn start:test:flask
pour la construction du flacon
yarn start:test:mv2
pour la construction mv2
Remarque : La commande yarn start:test
(qui lance le type de build testDev) a désactivé LavaMoat à la fois pour le système de build et pour l'application, offrant une expérience de test rationalisée pendant le développement. D'autre part, yarn build:test
permet à LavaMoat d'améliorer la sécurité à la fois du système de construction et de l'application, reflétant plus étroitement les environnements de production.
Une fois que votre build de test est prête, choisissez le navigateur pour vos tests e2e :
Pour Firefox, exécutez yarn test:e2e:firefox
.
Remarque : Si vous exécutez Firefox en tant que package Snap sous Linux, assurez-vous d'activer la variable d'environnement appropriée : FIREFOX_SNAP=true yarn test:e2e:firefox
Pour Chrome, exécutez yarn test:e2e:chrome
.
Ces scripts prennent en charge des options supplémentaires pour le débogage. Utilisez --help
pour voir toutes les options disponibles.
Des tests e2e simples peuvent être exécutés avec yarn test:e2e:single test/e2e/tests/TEST_NAME.spec.js
avec les options ci-dessous.
--browser Définit le navigateur à utiliser ; spécifiez « chrome », « firefox », « tout » ou laissez-le non défini pour s'exécuter sur « tout » par défaut. [string] [par défaut : 'all'] --debug Exécute les tests en mode débogage, en enregistrant chaque interaction du pilote [booléen] [par défaut : true] --retries Définit combien de fois le test doit être réessayé en cas d'échec. [numéro] [par défaut : 0] --leave-running Laisse le navigateur fonctionner après l'échec d'un test, ainsi que tout ce que le test a utilisé (ganache, le dapp de test, etc.) [booléen] [par défaut : faux] -- update-snapshot Mettre à jour les instantanés de test E2E [alias : -u] [booléen] [par défaut : faux]
Par exemple, pour exécuter les tests account-details
à l'aide de Chrome, avec la journalisation du débogage et avec le navigateur configuré pour rester ouvert en cas d'échec, vous utiliserez : yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
Lors du développement de nouvelles fonctionnalités, nous utilisons souvent des indicateurs de fonctionnalités. Alors que nous nous préparons à rendre ces fonctionnalités généralement disponibles (GA), nous supprimons les indicateurs de fonctionnalités. Les indicateurs de fonctionnalités existants sont répertoriés dans le fichier .metamaskrc.dist
. Pour exécuter des tests e2e avec un indicateur de fonctionnalité particulier activé, il est nécessaire de d'abord générer une version de test avec cet indicateur de fonctionnalité activé. Il existe deux manières d'y parvenir :
Pour activer un indicateur de fonctionnalité dans votre configuration locale, vous devez d'abord vous assurer que vous disposez d'un fichier .metamaskrc
copié à partir de .metamaskrc.dist
. Ensuite, dans votre fichier .metamaskrc
local, vous pouvez définir l'indicateur de fonctionnalité souhaité sur true. Suite à cela, une version de test avec l'indicateur de fonctionnalité activé peut être créée en exécutant yarn build:test
.
Alternativement, pour activer un indicateur de fonctionnalité directement lors de la création de la build de test, vous pouvez transmettre le paramètre comme true via la ligne de commande. Par exemple, l'activation de l'indicateur de fonctionnalité MULTICHAIN peut être effectuée en exécutant MULTICHAIN=1 yarn build:test
ou MULTICHAIN=1 yarn start:test
. Cette méthode permet des ajustements rapides des indicateurs de fonctionnalités sans altérer le fichier .metamaskrc
.
Une fois que vous avez créé une version de test avec l’indicateur de fonctionnalité souhaité activé, exécutez vos tests comme d’habitude. Vos tests seront désormais exécutés sur la version de l'extension avec l'indicateur de fonctionnalité spécifique activé. Par exemple : yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome
Cette approche garantit que vos tests e2e reflètent avec précision l'expérience utilisateur pour les prochaines fonctionnalités GA.
Différents types de build ont différents ensembles de tests e2e. Pour les exécuter, regardez dans le fichier package.json
. Vous trouverez :
"test:e2e:chrome:mmi": "SELENIUM_BROWSER=chrome node test/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=chrome node test/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=nœud firefox test/e2e/run-all.js",
Lorsque vous exécutez e2e sur une version MMI, vous devez savoir qu'il existe 2 ensembles de tests séparés :
MMI exécute un sous-ensemble de tests e2e de MetaMask. Pour faciliter cela, nous avons ajouté les balises @no-mmi
aux noms des tests qui ne sont pas applicables à ce type de build.
MMI exécute un autre ensemble spécifique de tests hérités e2e qui sont mieux documentés ici
Chaque fois que vous modifiez des dépendances (ajout, suppression ou mise à jour, que ce soit dans package.json
ou yarn.lock
), divers fichiers doivent être tenus à jour.
yarn.lock
:
Exécutez à nouveau yarn
après vos modifications pour vous assurer que yarn.lock
a été correctement mis à jour.
Exécutez yarn lint:lockfile:dedupe:fix
pour supprimer les dépendances en double du fichier de verrouillage.
La configuration allow-scripts
dans package.json
Exécutez yarn allow-scripts auto
pour mettre à jour automatiquement la configuration allow-scripts
. Cette configuration détermine si les scripts d'installation/post-installation du package sont autorisés à s'exécuter. Examinez chaque nouveau package pour déterminer si le script d'installation doit être exécuté ou non, en effectuant des tests si nécessaire.
Malheureusement, yarn allow-scripts auto
se comportera de manière incohérente sur différentes plates-formes. Les utilisateurs de macOS et Windows peuvent voir des modifications superflues liées aux dépendances facultatives.
Les fichiers de politique LavaMoat
Il existe deux ensembles de fichiers de stratégie LavaMoat :
Chaque fois que vous régénérez un fichier de stratégie, examinez les modifications pour déterminer si l'accès accordé à chaque package semble approprié.
Malheureusement, yarn lavamoat:auto
se comportera de manière incohérente sur différentes plates-formes. Les utilisateurs de macOS et Windows peuvent voir des modifications superflues liées aux dépendances facultatives.
Si vous continuez à rencontrer des échecs de stratégie même après avoir régénéré les fichiers de stratégie, essayez de régénérer les stratégies après une nouvelle installation en procédant :
Gardez à l'esprit que tout type d'importation dynamique ou d'utilisation dynamique de variables globales peut échapper à l'analyse statique de LavaMoat. Reportez-vous à la documentation LavaMoat ou demandez de l'aide si vous rencontrez des problèmes.
Celui-ci doit être régénéré chaque fois que les dépendances utilisées par le système de build lui-même changent.
Ceux-ci doivent être régénérés chaque fois que les dépendances de production de l'application Web changent.
Les fichiers de stratégie de production LavaMoat ( lavamoat/browserify/*/policy.json
), qui sont régénérés à l'aide yarn lavamoat:webapp:auto
. Ajoutez --help
pour l'utilisation.
Le fichier de stratégie LavaMoat du système de construction ( lavamoat/build-system/policy.json
), qui est régénéré à l'aide yarn lavamoat:build:auto
.
rm -rf node_modules/ && yarn && yarn lavamoat:auto
Si vous êtes membre de l'équipe MetaMask et que votre PR se trouve sur une branche de référentiel, vous pouvez utiliser la commande du bot @metamaskbot update-policies
pour demander au bot MetaMask de mettre automatiquement à jour les politiques pour vous.
Si votre PR provient d'un fork, vous pouvez demander à un membre de l'équipe MetaMask de vous aider à mettre à jour les fichiers de stratégie.
Instructions de mise à jour manuelle : Le tl;dr consiste à exécuter yarn lavamoat:auto
pour mettre à jour ces fichiers, mais il peut y avoir des diables dans les détails :
Le fichier Attributions
Si vous êtes membre de l'équipe MetaMask et que votre PR se trouve sur une branche de référentiel, vous pouvez utiliser la commande du bot @metamaskbot update-attributions
pour demander au bot MetaMask de mettre automatiquement à jour le fichier d'attributions pour vous.
Mise à jour manuelle : exécutez yarn attributions:generate
.
Visuel de la hiérarchie et des dépendances des contrôleurs à partir de l'été 2022.
Visuel de l’intégralité de la base de code.
Comment ajouter une nouvelle traduction à MetaMask
Guide de publication
Comment utiliser l'émulateur TREZOR
Développer sur MetaMask
Comment générer une visualisation du développement de ce référentiel
Comment ajouter de nouvelles confirmations
Directives de prise en charge du navigateur
Étendez les fonctionnalités de MetaMask avec MetaMask Snaps.
Invitez vos utilisateurs à ajouter et à basculer vers un nouveau réseau.
Modifiez le logo qui apparaît lorsque votre dapp se connecte à MetaMask.