يحتوي هذا المستودع على الأنظمة الأساسية المختلفة لتطبيق Deriv.
في هذه الوثيقة :
قبل تشغيل هذا المشروع أو المساهمة فيه، يجب أن يكون لديك إعداد الحزمة التالية في بيئتك.
contribution
) شوكة المشروع
لكي تتمكن من العمل على نسختك الخاصة من تطبيق Deriv، يرجى إرسال المشروع إلى مستودعك الخاص.
استنساخ باستخدام SSH
git clone [email protected]:deriv-com/deriv-app.git
داخلي : تكامل NX وLerna
- ابحث عن nx-cloud AccessToken وانسخه
- قم بعمل نسخة من
nx-cloud.env.example
من الدليل الجذر للمشروع وقم بتسميتهnx-cloud.env
واستبدلبالرمز المميز المقدم.
أدخل دليل المشروع
cd deriv-app
تثبيت التبعيات الخاصة بك:
npm run bootstrap
بناء الحزم:
npm run build:all
اسم الحزمة | المستندات | إصدار |
---|---|---|
Account | - | - |
Appstore | - | |
Bot-skeleton | - | |
Bot-web-ui | - | |
Cashier | - | |
Cfd | - | |
Components | - | |
Core | - | |
Indicators | - | |
P2P | ||
Publisher | - | |
Shared | - | |
Trader | - | |
Translations | - |
يجب أن تحتوي جميع الحزم على البرامج النصية التالية لتنفيذ الإجراءات المذكورة:
معلمة الحزمة | يأمر | وصف |
---|---|---|
✅ | start | يقوم بإجراء الاختبار الكامل ومجموعة البناء ويبدأ تشغيل خادم التطوير. |
✅ | serve | يقوم بتشغيل مجموعة البناء وبدء تشغيل خادم التطوير. عند تقديم خدمة core ، يتم استخدام قيمة open اختيارية كوسيطة لفتح صفحة معينة. (على سبيل المثال: npm run serve core --open=bot ) |
✅ | build:one | يقوم بتشغيل مجموعة البناء وإخراج النتيجة إلى dist لاسم الحزمة التي تم تمريرها. |
✅ | build:all | يقوم بتشغيل مجموعات البناء لجميع الحزم ويخرج النتيجة إلى dist . |
✅ | test | يقوم بتشغيل مجموعة الاختبار باستخدام eslint وstylelint وjest. |
✅ | test:jest | يعمل فقط على مجموعة اختبار jest. |
✅ | test:qa | يقوم بتشغيل مجموعة اختبار e2e. |
✅ | test:performance | يقوم بتشغيل مجموعة اختبار الأداء. |
ملاحظة: يرجى اتباع الملف التمهيدي لكل حزمة تنوي العمل بها لمعرفة كيفية الإعداد والبرامج النصية المخصصة لها. ومع ذلك، يمكن تشغيل البرامج النصية أعلاه من الدليل الجذر بالطريقة التالية.
تتم تسمية كل حزمة بالبادئة @deriv/
، ولكن بالنسبة للنصوص البرمجية المذكورة أعلاه، لا تحتاج إلى إضافة البادئة @deriv/
لأن البرامج النصية تسبق بالفعل الوسيطة الأولى للبرنامج النصي بـ @deriv/
. ومع ذلك ، إذا كنت تستخدم lerna
CLI مباشرة، فستحتاج إلى استخدام اسم الحزمة الكامل بما في ذلك البادئة @deriv/
.
يمكنك العثور على أسماء الحزم من خلال الانتقال أولاً إلى مجلد packages
. كل مجلد فرعي عبارة عن حزمة ويحتوي على ملف package.json
. قيمة مفتاح name
في package.json
هي اسم الحزمة.
إذا كنت ترغب في العمل على Core، فما عليك سوى تشغيل npm run serve core
.
لكن للعمل على أي من الحزم الأخرى (مثل Trader، Bot، P2P)، قم بما يلي:
npm run serve {package name}
في الأول. على سبيل المثال: npm run serve translations
، npm run serve bot
، وما إلى ذلك.npm run serve core
في الثانية. إذا كنت تنوي إزالة مجلد (مجلدات) node_modules
من المشاريع، فيرجى تشغيل npm run clean
من جذر المشروع.
يؤدي هذا إلى تشغيل lerna clean && rm -rf $(git rev-parse --show-toplevel)/node_modules
أسفل الغطاء. يمكنك قراءة المزيد عن أوامر lerna المتنوعة (والأمر clean
) في مستندات Lerna.
ملاحظة : في حالة مواجهة خطأ رفض الإذن، يرجى ببساطة تشغيل sudo chown -R $(whoami) .
من جذر المشروع.
npm cache clean -f
✅ core
مطلوبة لتشغيل أي من الحزم الأخرى، على سبيل المثال إذا كنت تريد تشغيل bot-web-ui، فيجب إنشاء مثيل للنواة من قبل.
npm run serve core
إذا كان البرنامج النصي يدعم "معلمة الحزمة"، فيمكنك توفير {package name}
لتشغيل البرنامج النصي فيه. في الوقت الحالي، يمكن إعطاء اسم حزمة واحد فقط للبرنامج النصي، إذا كنت ترغب في التشغيل في عدة برامج، من فضلك استخدم أمر lerna
المستخدم أسفل الغطاء وفقًا لمستنداته.
✅ لتشغيل حزمة bot
، ما عليك سوى تشغيل:
npm run serve bot-web-ui
✅ وبالمثل بالنسبة trader
(أو أي حزمة أخرى) ببرنامج نصي مختلف:
npm run test:stylelint trader
هناك نوعان من الإصدار:
git tag staging_v20191205 -m 'release staging'
# يجب أن تتبع العلامة تنسيق RegExp /^staging.*/
git push origin staging_v20191205
git tag production_v20191205 -m 'release production'
git push origin production_v20191205
هناك نوع رابع من الإصدار: إطلاق حزم التسجيل npm (حاليًا @deriv/p2p
). هذا قيد التنفيذ، لكن الطريقة الحالية هي:
@deriv
npm.@deriv/p2p
).npm run publish:p2p
. ينشر الأمر كافة الحزم المصطدمة. ومع ذلك، يتضمن الاسم حاليًا كلمة p2p
للإشارة إلى حالة WIP وأن P2P هي الحزمة الوحيدة المنشورة ضمن هذا الريبو. [{Project Code}] {Developer}/{Clickup Card ID}/{Description}
لعناوين العلاقات العامة. (على سبيل المثال: [COJ] evgeniy/COJ-247/Align next-button on mt5 modal
)، حيث [COJ] هو رمز مشروع النقر.هناك نوعان من معاينة نشر رابط الاختبار:
عند إنشاء العلاقات العامة، سيقوم Vercel تلقائيًا بإنشاء رابط اختبار داخل العلاقات العامة. يمكنك استخدام ذلك لمعاينة رابط الاختبار للتغييرات التي أجريتها.
إذا كان من الأفضل استخدام النشر اليدوي، فيمكنك استخدام وظيفة gh-pages لإنشاء رابط اختبار. فيما يلي طرق للقيام بذلك:
gh-pages
باستخدام: npm run deploy
.br_
ومسح الجذر) فرع gh-pages
الخاص بك ونشره إلى الجذر في أمر واحد باستخدام npm run deploy:clean
gh-pages
الخاص بك للفصل عن نشر تطبيق الجذر وعمليات نشر المجلدات الأخرى باستخدام: npm run deploy:folder br_test_folder
(يجب أن يكون اسم المجلد مسبوقًا بـ br_
)) كيف أقوم بتثبيت حزمة npm في إحدى حزمنا؟
ج: يمكنك ببساطة cd
في الحزمة التي ترغب في التثبيت عليها، ثم تشغيل npm i package-name
كالمعتاد. أو ببساطة قم بتشغيل lerna exec
مثل lerna exec --scope=local-package -- npm i npm-package-name
، على سبيل المثال: lerna exec --scope=@deriv/translations -- npm i i18next
. برجاء ملاحظة أنه لاستخدام lerna
CLI المباشر، فإنك تحتاج إلى اسم الحزمة بالكامل بما في ذلك البادئة @deriv/
.
كيف أقوم بإلغاء تثبيت حزمة npm من إحدى حزمنا؟
ج: تمامًا مثل التثبيت، باستثناء الأمر npm
الذي ستقوم بتشغيله، سيكون npm uninstall
(يتم اختصاره إلى npm un
). على سبيل المثال: lerna exec --scope=@deriv/translations -- npm un i18next
.
كيف يمكنني تشغيل npm ci
أو ما يعادله لإضافة تبعيات بناءً على package-lock.json
؟
أ. لديك خياران:
lerna exec
مع وسيطة --scope
باعتبارها الحزمة التي تريد تشغيل الأمر عليها، مثل lerna exec --scope=trader -- npm ci
.cd
في packages/PACKAGE-NAME
وقم بتشغيل npm ci
، مثل cd packages/trader && npm ci
فشلت بنيتي (بنيتي) وأستطيع أن أرى أنها مرتبطة بـ Node Sass ( node-sass
)، فماذا أفعل؟
ج: تحدث هذه المشكلة عندما يتم تعيين binding.node
الخاص node-sass
الخاصة بك على إصدار من العقدة مختلف عن إصدار المشروعات الحالية. يرجى تجربة ما يلي بالترتيب:
npx lerna exec -- npm rebuild node-sass
وحاول إنشاء حزمك مرة أخرى.npm cache clean --force
، متبوعًا بـ npm run clean
، ثم npm run bootstrap
. كيف يمكنني إعادة إنشاء ملف package-lock.json
؟
لقد أضفنا bootstrap:dev
إلى البرامج النصية. إذا كنت تقوم بتحديث أو إضافة حزمة وتريد إعادة إنشاء ملف package-lock.json
، فيجب عليك تشغيل هذا الأمر npm run bootstrap:dev