---
url: 'https://dxpr.com/ar/hc/%D8%A7%D9%84%D8%AA%D9%88%D8%AB%D9%8A%D9%82/%D8%AA%D8%B9%D9%84%D9%85-dxpr-builder/%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1/%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A9'
title: 'المساهمة | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T01:25:41+00:00'
updated: '2026-10-24T19:36:26+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  يجري تطوير DXPR Builder على GitHub في
  github.com/dxpr/dxpr_builder. وتتبع كل
  المساهمات سير العمل الموصوف في
  CONTRIBUTING.md الخاصة بالمستودع.
tags:
  - Tooling
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T19:36:26+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: المساهمة
      description: |-
        يجري تطوير DXPR Builder على GitHub في
        github.com/dxpr/dxpr_builder. وتتبع كل
        المساهمات سير العمل الموصوف في
        CONTRIBUTING.md الخاصة بالمستودع.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T01:25:41+0000'
      dateModified: '2026-10-24T19:36:26+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/ar/hc/%D8%A7%D9%84%D8%AA%D9%88%D8%AB%D9%8A%D9%82/%D8%AA%D8%B9%D9%84%D9%85-dxpr-builder/%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1/%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A9'
      articleSection: الأدوات
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/ar/hc/%D8%A7%D9%84%D8%AA%D9%88%D8%AB%D9%8A%D9%82/%D8%AA%D8%B9%D9%84%D9%85-dxpr-builder/%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1/%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A9'
      description: |-
        يجري تطوير DXPR Builder على GitHub في
        github.com/dxpr/dxpr_builder. وتتبع كل
        المساهمات سير العمل الموصوف في
        CONTRIBUTING.md الخاصة بالمستودع.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: الرئيسية
            item: 'https://dxpr.com/ar'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: ar
---
[مركز المساعدة](/ar/hc)/[التوثيق](/ar/hc/%D8%A7%D9%84%D8%AA%D9%88%D8%AB%D9%8A%D9%82) /[تعلّم DXPR Builder](/ar/hc/documentation/learn-dxpr-builder) /[التوسعة](/ar/hc/documentation/learn-dxpr-builder/extend) /[الأدوات](/ar/hc/documentation/learn-dxpr-builder/extend/tooling) # المساهمة.

 تعلّم DXPR Builderالتوسعةالأدوات

   ## في هذا الدليل

يجري تطوير DXPR Builder على GitHub في [github.com/dxpr/dxpr\_builder](https://github.com/dxpr/dxpr_builder). وتتبع كل المساهمات سير العمل الموصوف في [CONTRIBUTING.md](https://github.com/dxpr/dxpr_builder/blob/3.x/CONTRIBUTING.md) الخاصة بالمستودع.

## سير عمل Git

1. يجب ربط كل طلب سحب بقضية GitHub
2. اصطلاح تسمية الفروع: `person/target-branch/#issue-description` (مثلًا `jur/3.x/#42-fix-carousel-autoplay`)
3. اكتبوا التزامات ذرية متبعة [دليل alphagov لأسلوب Git](https://github.com/alphagov/styleguides/blob/master/git.md)
4. يجب أن تحمل طلبات السحب وصفًا قصيرًا للحل
5. أبقوا التغييرات ضمن نطاق القضية: لا تنسيق ولا إعادة هيكلة غير مرتبطين

## مالك الشيفرة

[@jjroelofs](https://github.com/jjroelofs) هو مالك الشيفرة. ولا يمكن دمج أي طلبات سحب دون مراجعتهم.

## معايير البرمجة

- PHP: [معايير Drupal للبرمجة](https://www.drupal.org/docs/develop/standards)
- JavaScript: ‏ES6+ فقط (لا `var` ولا jQuery في الشيفرة الجديدة). اتبعوا [معايير Airbnb لبرمجة JavaScript](https://github.com/airbnb/javascript) مع استثناءات المشروع
- CSS: اتبعوا [نظام التصميم](https://github.com/dxpr/dxpr_builder/blob/3.x/DESIGN-SYSTEM.md) للخصائص المخصصة وتسمية الرموز
- يجب أن يتضمن تغيير طريقة `showed` الخاصة بعنصر ملف `dxpr_frontend.js` المحدَّث. ولّدوه من المخرج الكامل الذي يطبعه المحرّر في وحدة تحكم المتصفح عندما تنقرون زر حفظ حاوية.
- تحتاج المزايا الجديدة تغطية QA Analytics.

شغّلوا `npm install` مرة بعد الاستنساخ. فهو يثبّت خطاف Husky السابق للالتزام، الذي يفحص ملفاتكم المُجهَّزة؛ انظر [الاختبار](/ar/hc/%D8%A7%D9%84%D8%AA%D9%88%D8%AB%D9%8A%D9%82/%D8%AA%D8%B9%D9%84%D9%85-dxpr-builder/%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1/%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1).

## تشغيل اختبارات E2E

تُشغَّل الاختبارات عبر أوامر بشرطة في تعليقات طلبات السحب:

| الأمر | الوصف |
|---|---|
| `/e2e` | تشغيل مجموعتي اختبار محرّر BS5 والمجهول الكاملتين |
| `/e2e groups=group-name` | تشغيل مجموعات اختبار محددة |
| `/e2e tests=ClassName` | تشغيل فئات اختبار محددة |
| `/e2e-bs3` | تشغيل مجموعة اختبار محرّر BS3 |
| `/e2eV2` | تشغيل مجموعتي BS5 على بنية DXPR CMS |
| `/e2e maven_ref=branch` | الاختبار مع فرع `dxpr_maven` مخصص |

عندما يحتاج تغيير في المنشئ تغييرًا في الاختبار، يحدّث مهندس ضمان الجودة `dxpr_maven` على فرع، وتشغّلون `/e2e maven_ref=<branch>` على طلب السحب الخاص بكم. فيُدمَج طلب سحب المنشئ أولًا، ثم طلب `dxpr_maven`.

## قبل طلب المراجعة

1. نفّذوا التغيير
2. اختبروا بعناية
3. نفّذوا جولة تنظيف/إعادة هيكلة
4. أعيدوا الاختبار للتأكد من عدم كسر شيء
5. التزموا وادفعوا بسجل git نظيف
6. تحققوا من نجاح فحوصات المدقق
7. علّقوا `/e2e` على طلب السحب لتشغيل اختبارات الانحدار
8. اطلبوا المراجعة بعد نجاح كل الفحوصات