يمكنك العثور على أحدث إصدار من MetaMask على موقعنا الرسمي. للحصول على مساعدة في استخدام MetaMask، قم بزيارة موقع دعم المستخدم الخاص بنا.
للأسئلة العامة أو طلبات الميزات أو أسئلة المطورين، قم بزيارة منتدى المجتمع الخاص بنا.
يدعم MetaMask المتصفحات المستندة إلى Firefox وGoogle Chrome وChromium. نوصي باستخدام أحدث إصدار متوفر من المتصفح.
لمتابعة آخر الأخبار، تابعونا على X.
لمعرفة كيفية تطوير التطبيقات المتوافقة مع MetaMask، تفضل بزيارة مستندات المطورين.
لمعرفة كيفية المساهمة في قاعدة بيانات MetaMask، قم بزيارة مستندات المساهمين الخاصة بنا.
لمعرفة كيفية المساهمة في مشروع MetaMask Extension نفسه، قم بزيارة مستندات الامتداد الخاصة بنا.
كبديل للبناء على جهازك المحلي، هناك خيار جديد لإعداد بيئة التطوير وتشغيلها في أقل من 5 دقائق باستخدام GitHub Codespaces. يرجى ملاحظة أن هناك حصة شهرية مجانية محدودة، وبعد ذلك سيبدأ GitHub في تحصيل الرسوم منك.
ملاحظة: تتم محاسبتك على كل من الوقت الذي تقضيه في التشغيل ومساحة التخزين المستخدمة
ابدأ بالنقر على الزر أعلاه
سيتم فتح علامة تبويب متصفح جديدة بإصدار بعيد من Visual Studio Code (سيستغرق هذا بضع دقائق للتحميل)
سيتم فتح "متصفح بسيط" داخل المتصفح باستخدام noVNC - انقر فوق "اتصال".
انقر فوق الزر الموجود في الجزء العلوي الأيمن من علامة التبويب Simple Browser لفتح نافذة noVNC في علامة التبويب الخاصة بها
افتح الشريط الجانبي noVNC على اليسار، وانقر فوق رمز الترس، وقم بتغيير وضع القياس إلى تغيير الحجم عن بُعد
الخطوات الاختيارية:
انتظر حوالي 20 ثانية إضافية عند الإطلاق الأول، حتى تنتهي البرامج النصية
انقر بزر الماوس الأيمن على سطح مكتب noVNC لتشغيل Chrome أو Firefox مع تثبيت MetaMask مسبقًا
قم بتغيير بعض التعليمات البرمجية، ثم قم بتشغيل yarn start
البناء في وضع التطوير
بعد دقيقة أو دقيقتين، سيتم الانتهاء من البناء، ويمكنك رؤية التغييرات في سطح مكتب noVNC
تتم محاسبتك على كل من الوقت الذي تقضيه في التشغيل ومساحة التخزين المستخدمة
تتوقف مساحات الرموز مؤقتًا بعد 30 دقيقة من عدم النشاط، ويتم حذفها تلقائيًا بعد 30 يومًا من عدم النشاط
يمكنك إدارة Codespaces الخاصة بك هنا: https://github.com/codespaces
قد ترغب في إيقافها مؤقتًا يدويًا قبل انتهاء المهلة البالغة 30 دقيقة
إذا كان لديك عدة مساحات كودية خاملة معلقة لعدة أيام، فمن الممكن أن تنفد حصة التخزين لديك بسرعة. يجب عليك حذف تلك التي لا تخطط لاستخدامها بعد الآن، وربما تحتفظ فقط بـ 1 أو 2 على المدى الطويل. من الممكن أيضًا إعادة استخدام Codespaces القديمة وتبديل الفرع، بدلاً من إنشاء أخرى جديدة وحذف القديمة.
إذا لم تكن مطورًا داخليًا لـ MetaMask، أو كنت تقوم بالتطوير بطريقة أخرى على الانقسام، فسيكون مفتاح Infura الافتراضي موجودًا في الخطة المجانية وسيكون له طلبات محدودة جدًا في الثانية. إذا كنت تريد استخدام مفتاح Infura الخاص بك، فاتبع تعليمات .metamaskrc
و INFURA_PROJECT_ID
في قسم البناء على جهازك المحلي.
تثبيت Node.js الإصدار 20
إذا كنت تستخدم nvm (مستحسن)، فإن تشغيل nvm use
سيختار تلقائيًا إصدار العقدة المناسب لك.
قم بتمكين Corepack عن طريق تنفيذ الأمر corepack enable
ضمن مشروع metamask-extension. Corepack هي أداة مساعدة مضمنة في Node.js افتراضيًا. يقوم بإدارة الغزل على أساس كل مشروع، باستخدام الإصدار المحدد بواسطة خاصية packageManager
في ملف package.json الخاص بالمشروع. يرجى ملاحظة أن الإصدارات الحديثة من Yarn ليست مخصصة للتثبيت عالميًا أو عبر npm.
قم بتكرار .metamaskrc.dist
داخل الجذر وأعد تسميته إلى .metamaskrc
عن طريق تشغيل cp .metamaskrc{.dist,}
.
إذا لم يكن لديك حساب Infura، يمكنك إنشاء حساب مجانًا على موقع Infura.
استبدل قيمة INFURA_PROJECT_ID
بمفتاح Infura API الشخصي الخاص بك.
في حالة تصحيح أخطاء MetaMetrics، ستحتاج إلى إضافة قيمة لمفتاح كتابة المقطع SEGMENT_WRITE_KEY
، راجع التطوير على MetaMask - المقطع.
في حالة تصحيح أخطاء الاستثناءات غير المعالجة، ستحتاج إلى إضافة قيمة لـ SENTRY_DSN
Sentry Dsn، راجع التطوير على MetaMask - Sentry.
اختياريًا، استبدل قيمة PASSWORD
بكلمة مرور محفظة التطوير الخاصة بك لتجنب إدخالها في كل مرة تفتح فيها التطبيق.
قم بتشغيل yarn install
لتثبيت التبعيات.
أنشئ المشروع إلى المجلد ./dist/
باستخدام yarn dist
(للمتصفحات المستندة إلى Chromium) أو yarn dist:mv2
(لمتصفح Firefox)
بشكل اختياري، لإنشاء بنية تطوير، يمكنك بدلاً من ذلك تشغيل yarn start
(للمتصفحات المستندة إلى Chromium) أو yarn start:mv2
(لمتصفح فايرفوكس)
يمكن العثور على الإصدارات غير المضغوطة في /dist
، ويمكن العثور على الإصدارات المضغوطة في /builds
بمجرد إنشائها.
راجع الملف التمهيدي لنظام البناء للحصول على معلومات استخدام نظام البناء.
اتبع هذه الإرشادات للتحقق من أن الإصدار المحلي الخاص بك يعمل بشكل صحيح:
كيفية إضافة تصميم مخصص إلى كروم
كيفية إضافة بناء مخصص لمتصفح فايرفوكس
للحصول على تعليقات سريعة من وظائف اللياقة البدنية ذات جودة التعليمات البرمجية المشتركة لدينا قبل الالتزام بالرمز، يمكنك تثبيت خطافات git الخاصة بنا مع Husky.
$ yarn githooks:install
يمكنك قراءة المزيد عنها في وثائق الاختبار الخاصة بنا.
إذا كنت تستخدم VS Code ولم تتمكن من تنفيذ عمليات الالتزام من الشريط الجانبي للتحكم بالمصدر بسبب خطأ "لم يتم العثور على الأمر"، فجرّب هذه الخطوات من مستندات Husky.
لبدء بناء التطوير (على سبيل المثال، مع التسجيل ومشاهدة الملفات)، قم بتشغيل yarn start
.
يمكنك بدء إنشاء تطوير باستخدام حالة المحفظة المحملة مسبقًا، عن طريق إضافة TEST_SRP='
و PASSWORD='
إلى ملف .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:
قم بتثبيت الحزمة 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
. لتشغيل اختبارات الوحدة فقط، قم بتشغيل yarn test:unit
.
يمكنك تشغيل الوبر بمفرده باستخدام yarn lint
، ويمكنك إصلاح بعض مشكلات الوبر تلقائيًا باستخدام yarn lint:fix
. يمكنك أيضًا تشغيل هذين الأمرين فقط على تغييراتك المحلية لتوفير الوقت باستخدام yarn lint:changed
yarn lint:changed:fix
على التوالي.
للحصول على دليل تصحيح أخطاء Jest باستخدام Node.js، راجع 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 الخاصة بك:
بالنسبة لمتصفح فايرفوكس، قم بتشغيل yarn test:e2e:firefox
.
ملاحظة: إذا كنت تقوم بتشغيل Firefox كحزمة مبكرة على Linux، فتأكد من تمكين متغير البيئة المناسب: 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" افتراضيًا. [سلسلة] [افتراضي: 'all'] --debug قم بتشغيل الاختبارات في وضع التصحيح، وتسجيل كل تفاعل لبرنامج التشغيل [boolean] [افتراضي: صحيح] --إعادة المحاولة قم بتعيين عدد المرات التي يجب فيها إعادة محاولة الاختبار عند الفشل. [رقم] [افتراضي: 0] --leave-running يترك المتصفح قيد التشغيل بعد فشل الاختبار، بالإضافة إلى أي شيء آخر استخدمه الاختبار (الجاناش، التطبيق اللامركزي للاختبار، وما إلى ذلك) [منطقي] [افتراضي: خطأ] -- تحديث لقطة تحديث لقطات اختبار E2E [الاسم المستعار: -u] [منطقي] [الافتراضي: خطأ]
على سبيل المثال، لتشغيل اختبارات account-details
باستخدام Chrome، مع تسجيل التصحيح ومع تعيين المتصفح ليظل مفتوحًا عند الفشل، يمكنك استخدام: yarn test:e2e:single test/e2e/tests/account-menu/account-details.spec.js --browser=chrome --leave-running
أثناء تطوير الميزات الجديدة، غالبًا ما نستخدم علامات الميزات. وبينما نستعد لإتاحة هذه الميزات بشكل عام (GA)، فإننا نزيل علامات الميزات. يتم سرد علامات الميزات الموجودة في ملف .metamaskrc.dist
. لتنفيذ اختبارات e2e مع تمكين علامة ميزة معينة، من الضروري أولاً إنشاء نسخة اختبار مع تنشيط علامة الميزة هذه. هناك طريقتان لتحقيق ذلك:
لتمكين علامة الميزة في التكوين المحلي الخاص بك، يجب عليك أولاً التأكد من أن لديك ملف .metamaskrc
منسوخ من .metamaskrc.dist
. ثم، داخل ملف .metamaskrc
المحلي الخاص بك، يمكنك تعيين علامة الميزة المطلوبة على true. بعد ذلك، يمكن إنشاء بناء اختبار مع تمكين علامة الميزة عن طريق تنفيذ yarn build:test
.
وبدلاً من ذلك، لتمكين علامة الميزة مباشرةً أثناء إنشاء البنية الاختبارية، يمكنك تمرير المعلمة على أنها صحيحة عبر سطر الأوامر. على سبيل المثال، يمكن تنشيط علامة ميزة 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=اختبار عقدة الكروم/e2e/run-all.js --mmi", "test:e2e:chrome:snaps": "SELENIUM_BROWSER=اختبار عقدة الكروم/e2e/run- all.js --snaps", "test:e2e:firefox": "SELENIUM_BROWSER=اختبار عقدة فايرفوكس/e2e/run-all.js",
عند تشغيل e2e على بنية MMI، عليك أن تعرف أن هناك مجموعتين منفصلتين من الاختبارات:
تدير MMI مجموعة فرعية من اختبارات e2e الخاصة بـ MetaMask. لتسهيل ذلك، قمنا بإلحاق علامات @no-mmi
بأسماء تلك الاختبارات التي لا تنطبق على نوع البناء هذا.
تدير MMI مجموعة أخرى محددة من اختبارات e2e القديمة والتي تم توثيقها بشكل أفضل هنا
كلما قمت بتغيير التبعيات (إضافة أو إزالة أو تحديث، سواء في package.json
أو yarn.lock
)، هناك العديد من الملفات التي يجب تحديثها.
yarn.lock
:
قم بتشغيل yarn
مرة أخرى بعد التغييرات التي أجريتها للتأكد من تحديث yarn.lock
بشكل صحيح.
قم بتشغيل yarn lint:lockfile:dedupe:fix
لإزالة التبعيات المكررة من ملف القفل.
تكوين allow-scripts
في package.json
قم بتشغيل yarn allow-scripts auto
لتحديث تكوين allow-scripts
تلقائيًا. يحدد هذا التكوين ما إذا كان مسموحًا بتشغيل البرامج النصية للتثبيت/ما بعد التثبيت الخاصة بالحزمة. قم بمراجعة كل حزمة جديدة لتحديد ما إذا كان البرنامج النصي للتثبيت يحتاج إلى التشغيل أم لا، واختباره إذا لزم الأمر.
لسوء الحظ، yarn allow-scripts auto
سوف يتصرف بشكل غير متناسق على الأنظمة الأساسية المختلفة. قد يرى مستخدمو نظامي التشغيل macOS وWindows تغييرات غير ضرورية تتعلق بالتبعيات الاختيارية.
ملفات سياسة LavaMoat
هناك مجموعتان من ملفات سياسة LavaMoat:
عندما تقوم بإعادة إنشاء ملف سياسة، قم بمراجعة التغييرات لتحديد ما إذا كان الوصول الممنوح لكل حزمة يبدو مناسبًا.
لسوء الحظ، yarn lavamoat:auto
سوف يتصرف بشكل غير متسق على منصات مختلفة. قد يرى مستخدمو نظامي التشغيل macOS وWindows تغييرات غير ضرورية تتعلق بالتبعيات الاختيارية.
إذا استمرت محاولات فشل السياسة حتى بعد إعادة إنشاء ملفات السياسة، فحاول إعادة إنشاء السياسات بعد التثبيت النظيف عن طريق القيام بما يلي:
ضع في اعتبارك أن أي نوع من الاستيراد الديناميكي أو الاستخدام الديناميكي للعناصر العالمية قد يفلت من تحليل LavaMoat الثابت. ارجع إلى وثائق LavaMoat أو اطلب المساعدة إذا واجهت أي مشكلات.
يجب إعادة إنشاء هذا كلما تغيرت التبعيات التي يستخدمها نظام البناء نفسه.
يجب إعادة إنشائها كلما تغيرت تبعيات الإنتاج لتطبيق الويب.
ملفات سياسة 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 وكان العلاقات العامة الخاصة بك موجودة في فرع مستودع، فيمكنك استخدام أمر bot @metamaskbot update-policies
لمطالبة روبوت MetaMask بتحديث السياسات تلقائيًا نيابةً عنك.
إذا كانت علاقاتك العامة من شوكة، فيمكنك أن تطلب من أحد أعضاء فريق MetaMask المساعدة في تحديث ملفات السياسة.
تعليمات التحديث اليدوي: يقوم tl;dr بتشغيل yarn lavamoat:auto
لتحديث هذه الملفات، ولكن يمكن أن يكون هناك شياطين في التفاصيل:
ملف الإسناد
إذا كنت عضوًا في فريق MetaMask وكان العلاقات العامة الخاصة بك موجودة في فرع مستودع، فيمكنك استخدام أمر bot @metamaskbot update-attributions
لمطالبة برنامج MetaMask بتحديث ملف السمات تلقائيًا نيابةً عنك.
التحديث اليدوي: تشغيل yarn attributions:generate
.
رؤية للتسلسل الهرمي لوحدة التحكم وتبعياتها اعتبارًا من صيف 2022.
مرئية لقاعدة التعليمات البرمجية بأكملها.
كيفية إضافة ترجمة جديدة إلى MetaMask
دليل النشر
كيفية استخدام محاكي TREZOR
التطوير على MetaMask
كيفية إنشاء تصور لتطوير هذا المستودع
كيفية إضافة تأكيدات جديدة
إرشادات دعم المتصفح
قم بتوسيع ميزات MetaMask من خلال MetaMask Snaps.
اطلب من المستخدمين إضافة شبكة جديدة والتبديل إليها.
قم بتغيير الشعار الذي يظهر عندما يتصل تطبيقك اللامركزي بـ MetaMask.