---
url: 'https://dxpr.com/fr/hc/documentation/learn-dxpr-builder/development/contributing'
title: 'Contribuer à DXPR Builder | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:00:39+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'Le développement de DXPR Builder a lieu sur GitHub sur github.com/dxpr/dxpr_builder. Toutes les contributions suivent le flux décrit dans le CONTRIBUTING.md du dépôt.'
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-24T11:00:39+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Contribuer à DXPR Builder'
      description: 'Le développement de DXPR Builder a lieu sur GitHub sur github.com/dxpr/dxpr_builder. Toutes les contributions suivent le flux décrit dans le CONTRIBUTING.md du dépôt.'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T11:00:39+0000'
      dateModified: '2026-10-24T11:00:39+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/fr/hc/documentation/learn-dxpr-builder/development/contributing'
      articleSection: Outils
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/fr/hc/documentation/learn-dxpr-builder/development/contributing'
      description: 'Le développement de DXPR Builder a lieu sur GitHub sur github.com/dxpr/dxpr_builder. Toutes les contributions suivent le flux décrit dans le CONTRIBUTING.md du dépôt.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Accueil
            item: 'https://dxpr.com/fr'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: fr
---
[Centre d’aide](/fr/hc)/[Documentation](/fr/hc/documentation) /[Apprendre DXPR Builder](/fr/hc/documentation/learn-dxpr-builder) /[Étendre](/fr/hc/documentation/learn-dxpr-builder/extend) /[Outils](/fr/hc/documentation/learn-dxpr-builder/extend/tooling) # Contribuer à DXPR Builder.

 Apprendre DXPR BuilderÉtendreOutils

   ## Dans ce guide

Le développement de DXPR Builder a lieu sur GitHub sur [github.com/dxpr/dxpr\_builder](https://github.com/dxpr/dxpr_builder). Toutes les contributions suivent le flux décrit dans le [CONTRIBUTING.md](https://github.com/dxpr/dxpr_builder/blob/3.x/CONTRIBUTING.md) du dépôt.

## Flux Git

1. Chaque pull request doit être liée à une issue GitHub
2. Convention de nommage des branches : `person/target-branch/#issue-description` (p. ex. `jur/3.x/#42-fix-carousel-autoplay`)
3. Écrivez des commits atomiques suivant le [alphagov Git styleguide](https://github.com/alphagov/styleguides/blob/master/git.md)
4. Les pull requests doivent contenir une courte description de la solution
5. Gardez les changements dans le périmètre de l’issue : ni formatage ni refactorisation hors sujet

## Propriétaire du code

[@jjroelofs](https://github.com/jjroelofs) est le propriétaire du code. Aucune pull request ne peut être fusionnée sans sa relecture.

## Standards de code

- PHP : [standards de code Drupal](https://www.drupal.org/docs/develop/standards)
- JavaScript : ES6+ uniquement (pas de `var`, pas de jQuery dans le nouveau code). Suivez les [standards de code JavaScript Airbnb](https://github.com/airbnb/javascript) avec les exceptions du projet
- CSS : suivez le [Design System](https://github.com/dxpr/dxpr_builder/blob/3.x/DESIGN-SYSTEM.md) pour les propriétés personnalisées et le nommage des jetons
- Un changement de la méthode `showed` d’un élément doit inclure le `dxpr_frontend.js` mis à jour. Générez-le depuis la sortie complète que l’éditeur affiche dans la console du navigateur quand vous cliquez le bouton d’enregistrement d’un conteneur.
- Les nouvelles fonctions exigent une couverture QA Analytics.

Exécutez `npm install` une fois après clonage. Il installe le hook pre-commit Husky, qui linte vos fichiers stagés ; voir [Tests](/hc/documentation/learn-dxpr-builder/development/testing).

## Lancer les tests E2E

Les tests se déclenchent via des commandes slash dans les commentaires de PR :

| Commande | Description |
|---|---|
| `/e2e` | Exécute les suites complètes éditeur BS5 et anonyme |
| `/e2e groups=group-name` | Exécute des groupes de tests précis |
| `/e2e tests=ClassName` | Exécute des classes de test précises |
| `/e2e-bs3` | Exécute la suite éditeur BS3 |
| `/e2eV2` | Exécute les suites BS5 sur la stack DXPR CMS |
| `/e2e maven_ref=branch` | Teste avec une branche `dxpr_maven` personnalisée |

Quand un changement du builder exige un changement de test, l’ingénieur QA met à jour `dxpr_maven` sur une branche, et vous exécutez `/e2e maven_ref=<branch>` sur votre pull request. La pull request du builder fusionne d’abord, puis celle de `dxpr_maven`.

## Avant de demander une relecture

1. Implémentez le changement
2. Testez soigneusement
3. Faites un tour de nettoyage/refactorisation
4. Retestez pour confirmer que rien n’a cassé
5. Commitez et poussez avec un historique git propre
6. Vérifiez que les contrôles du linter passent
7. Commentez `/e2e` sur la PR pour lancer les tests de régression
8. Demandez une relecture une fois tous les contrôles passés