Partager cet article :

Blog
Aug 08, 20238 min read

Tutoriel sur le module Config split pour Drupal

Ivaylo Tsandev

Développeur

Tutoriel sur le module Config split pour Drupal

En tant que développeurs, nous sommes souvent amenés à travailler dans des environnements différents. Cela peut parfois conduire à des problèmes (inattendus). Dans Drupal 8, nous utilisons le système de configuration qui fonctionne plutôt bien, mais il y a des cas où les paramètres pour l'environnement local et tout autre environnement devraient être différents.

Disons que nous ne voulons pas permettre aux administrateurs du site d'utiliser les modules Views UI et DB log, mais que nous en avons besoin pour le développement. Cependant, lorsque nous activons ces modules et exportons les configurations, ils apparaîtront dans le fichier core.extensions.yml, et lors de l'exécution d'une importation de configurations dans n'importe quel autre environnement, ils seront activés. Ce n'est pas ce que nous voulons.

Alors, quelle est la décision ?

Nous pouvons toujours les activer pour le développement et les désactiver avant l'exportation de la configuration. Nous pourrions également exporter avec les modules activés et supprimer leurs entrées du fichier core.extensions.yml avant de livrer. Mais ... soyons honnêtes. Sommes-nous sûrs de pouvoir faire cela à CHAQUE fois ? Je n'en suis pas si sûr. Et qu'en est-il s'il y a plusieurs entrées que nous devons gérer ? Ce n'est pas très pratique, n'est-ce pas ?

C'est ici que le module Configuration Split prend place. Je vais maintenant vous montrer une utilisation basique de ce module.

Commençons par le commencement. Intégrons-le dans notre projet :

composer require drupal/config_split

Ensuite, nous l'activons via l'interface utilisateur ou en l'exécutant :

drush fr config_split

Notez qu'il dépend d'un autre module - Config Filter, mais cette dépendance est gérée automatiquement, alors assurez-vous simplement de confirmer l'activation des deux modules. C'est bien. Nous avons maintenant une nouvelle section dans l'onglet 'Configuration' sous la section 'Développement' et elle s'appelle 'Configuration split settings'

Configuration split settings

Cliquez dessus ou visitez directement l'url '/admin/config/development/configuration/config-split'. La première chose que vous verrez est que nous n'avons pas encore de paramètres de division de la configuration.

Configuration split settings page

OK - créons-en deux - dev et prod. Mais d'abord, plaçons ceci dans le fichier 'settings.php' :

$settings['config_sync_directory'] = '../config/sync' ;

Cela signifie que les configurations se trouvent dans le répertoire racine, dans un dossier appelé "config". Ce dossier aura un sous-dossier "sync", qui contiendra toutes les configurations principales. Maintenant, lorsque nous exécutons :

drush cex

Nous avons déjà un répertoire config/sync, qui contient toutes les configurations.

Avant d'aller plus loin, créons nos sous-dossiers spéciaux dans le dossier "config". Nommons-les "dev" et "prod". Le résultat devrait être le suivant :

config sync directory

Nous sommes maintenant prêts à créer nos configurations.

Revenons sur le site, appuyons sur le gros bouton et créons le premier. Remplissez 'Dev' dans le champ Label et '../config/dev' (pas besoin de guillemets) dans le champ Dossier. Vous vous souvenez des dossiers que nous avons créés ? C'est ici que nous les utiliserons. Appuyez sur Enregistrer. Nous avons maintenant la première configuration.

Créons le second. Répétez l'étape précédente en remplissant 'Prod' et '../config/prod' dans les champs correspondants. C'est parfait. Nous avons presque terminé.

Create prod configuration split settings

Maintenant, activons les modules que nous voulons uniquement pour l'environnement de développement. Commençons par Views UI et DB log s'ils ne sont pas déjà activés. Si c'est le cas, passons à l'étape suivante. Visitez le site '/admin/config/development/configuration/config-split/dev/edit'. Naviguez jusqu'à la section 'Complete split', descendez jusqu'à 'Database Logging' et cochez-la. Ensuite, faisons défiler vers le bas jusqu'à 'Views UI' et vérifions-le.

split modules

En général, nous ne travaillons qu'avec cette section "Complete split" pour les modules et les éléments de configuration. Nous parlerons des autres sections plus tard. Maintenant, sauvegardons. C'est très bien. Nous devons exporter nos configurations.

drush cex

Si nous vérifions maintenant le répertoire 'sync', nous verrons quelque chose comme ceci:
  ;

Config sync directory changes

Notre dossier d'environnement de développement contient les informations relatives à nos modifications.

C'est ici qu'intervient la partie la plus déroutante du travail avec ce module. Si nous consultons à nouveau la page d'aperçu de la division de la configuration, nous verrons deux configurations actives.

Configuration split settings page

Comment les distinguer ? Hmm. Prenons un peu de recul - en quoi cela est-il blessant ? Nous les avons créés, n'est-ce pas ? Oui, mais nous n'avons besoin que d'un seul d'entre eux dans chaque environnement. Sur la machine locale, nous avons besoin de celui de dev et n'importe quel test/stage/prod aurait besoin de sa propre configuration. Cependant, lorsqu'ils sont tous actifs, il n'y a pas de réelle séparation. Alors, que pouvons-nous faire ? La réponse est que nous devons les écraser de manière programmatique avec le fichier settings.php. Commençons par créer une variable appelée "$env" et fixons sa valeur à "dev". Cette valeur peut provenir d'une variable d'environnement. Elle peut être placée dans un fichier settings.local.php ignoré ou toute autre méthode correspondant à notre cas d'utilisation. Pour l'instant, nous allons la changer manuellement. Ajoutons donc les lignes suivantes dans notre fichier settings.(local.)php :

$env = 'dev' ; 
switch ($env) { 
 case 'prod' : 
 $config['config_split.config_split.dev']['status'] = FALSE ; 
 $config['config_split.config_split.prod']['status'] = TRUE ; 
 break ; 
 case 'dev' : 
 default : 
 $config['config_split.config_split.dev']['status'] = TRUE ; 
 $config['config_split.config_split.prod']['status'] = FALSE ; 
 break ; 
}

Actualisons maintenant la page de présentation.

Configuration split settings page

C'est mieux. Nous n'avons plus qu'une seule configuration active. S'il y en a plusieurs, elles doivent être écrasées de la même manière. Nous voulons toujours avoir une seule configuration active.

Changeons maintenant la valeur de la variable '$env' en 'prod' et faisons comme si nous étions sur le serveur. Les paramètres ci-dessus seront inversés.

Configuration split settings page
Nous allons maintenant désactiver les modules, exporter les configurations et vider le cache :

drush pmu views_ui dblog 
drush cex 
drush cr

OK, essayons de voir si cela fonctionne. Maintenant, dans l'environnement prod, nous ne les avons pas. Mais apparaîtront-ils lorsque nous reviendrons à l'environnement de développement ? Remettons le '$env' à 'dev'. N'oubliez pas de vider le cache. Importons les configurations.

drush cr 
drush cim

Ils sont de retour ! Les modules Views UI et DB log sont déjà désactivés par défaut dans tous les autres environnements, à l'exception de l'environnement 'dev'. Nous pouvons maintenant oublier de gérer ces modules séparément. N'est-ce pas génial ?

Une fois cette configuration mise en place, il est très facile de l'utiliser. C'est ainsi qu'un module entier est configuré. De la même manière, nous pouvons utiliser n'importe quelle configuration. Comme 'system.mail' ou n'importe quel bloc. Ou comme 'comment.settings'. Supprimons également l'agrégation CSS et JS. Ils se trouvent sous Configuration -> ; Développement sous Optimisation de la bande passante. Décochons les deux.

Bandwidth optimization settings

Revenons à la partie Dev de notre configuration fractionnée et trouvons l'entrée 'system.performance' sous les éléments Complete Split -> ; Configuration, cochons-la et sauvegardons. Cela garantira que l'environnement de développement n'aura pas d'agrégation. Nous pourrions également placer des enregistrements manuellement ici. N'oubliez pas d'exporter vos configurations une fois qu'elles sont prêtes. Voilà, c'est fait. Facile, n'est-ce pas ?

La dernière partie restante est la section de fractionnement conditionnel de notre configuration. Avant d'y apporter des modifications, voyons quelle est la différence entre "Fractionnement complet" et "Fractionnement conditionnel". Si vous jetez un coup d'œil à la description de chacune de ces sections, vous remarquerez que la première dit :

"Split complet : Les configurations listées ici seront supprimées du répertoire de synchronisation et sauvegardées dans le répertoire de scission à la place. Les modules seront supprimés de core.extension lors de l'exportation (et ajoutés lors de l'importation avec la séparation activée)"   ;

Et l'autre est :

"Séparation conditionnelle : La configuration listée ici sera laissée intacte dans le répertoire de synchronisation principal. La version actuellement active sera exportée vers le répertoire fractionné."

Cela signifie donc qu'en mettant quoi que ce soit dans la section Complete split, cette configuration disparaît du répertoire principal (c'est-à-dire /config/sync), alors que la section conditionnelle ne la supprime pas. Elle conserve les deux valeurs et n'applique les différentes valeurs que lorsque c'est nécessaire. Il y a même une option pour séparer conditionnellement seulement si le paramètre est en fait différent de celui du répertoire principal. Cela peut également s'avérer très pratique. Un autre avantage est que nous pouvons exporter des configurations dépendantes avec la séparation conditionnelle :

Conditional split settings

Voilà, c'est tout ! J'espère que ce tutoriel vous sera utile !

S'ABONNER À NOTRE NEWSLETTER

Partager cet article :

S'ABONNER À NOTRE NEWSLETTER

Articles de blog connexes

    Pourquoi les startups hésitent à travailler avec une agence de développement de logiciels sur mesure - et comment nous répondons à toutes leurs préoccupations

    Blog

    Pourquoi les startups hésitent à travailler avec une agence de développement de logiciels sur mesure - et comment nous répondons à toutes leurs préoccupations

    <p>Les startups hésitent souvent à travailler avec des agences de logiciels pour des raisons de coût, de contrôle et de flexibilité. Découvrez comment les solutions logicielles sur mesure de Bulcode relèvent chaque défi, garantissant ainsi croissance et agilité.</p>

    Écrit par Svetoslava Angelova
    Nov 05, 20247 min read
    Construire une équipe Agile performante : Notre approche éprouvée

    Blog

    Construire une équipe Agile performante : Notre approche éprouvée

    Découvrez comment nous construisons des équipes Agile performantes en définissant des rôles clairs, en favorisant la collaboration et en utilisant des outils flexibles.

    Écrit par Svetoslava Angelova
    Aug 27, 202411 min read
    Drupal 11 : à quoi s'attendre ? Guide complet des nouvelles fonctionnalités et des améliorations

    Blog

    Drupal 11 : à quoi s'attendre ? Guide complet des nouvelles fonctionnalités et des améliorations

    Drupal 11 est sorti ! Dans cet article, découvrez ses fonctionnalités et améliorations passionnantes. Mettez-le à jour dès maintenant pour redéfinir votre stratégie numérique avec l'aide des experts de Bulcode.

    Écrit par Svetoslava Angelova
    Aug 05, 20249 min read
    Composants d'annuaire unique dans Drupal core : Une vue d'ensemble

    Blog

    Composants d'annuaire unique dans Drupal core : Une vue d'ensemble

    Découvrez comment les composants à répertoire unique (SDC) de Drupal Core rationalisent le processus de développement en encapsulant les fichiers liés aux composants dans un répertoire unique. Découvrez les avantages des SDC et suivez un guide étape par étape pour les mettre en œuvre dans vos projets Drupal.

    Écrit par Nikolay Tsekov
    Aug 07, 20244 min read
    Événements SCRUM

    Blog

    Événements SCRUM

    Scrum définit plusieurs événements (parfois appelés cérémonies) qui se déroulent au cours de chaque sprint : la planification du sprint, la mêlée quotidienne, la revue du sprint et la rétrospective du sprint.

    Écrit par Svetoslava Angelova
    Aug 07, 20233 min read
    Artéfacts Scrum

    Blog

    Artéfacts Scrum

    Dans le domaine du développement logiciel, le terme "artefact" fait référence aux informations que les parties prenantes et l'équipe scrum utilisent pour décrire un produit en cours de développement.

    Écrit par Svetoslava Angelova
    Aug 07, 20232 min read
    Drupal sans tête avec Next.js - un exemple simple à suivre

    Blog

    Drupal sans tête avec Next.js - un exemple simple à suivre

    La tendance récente, dans le développement web en général, et par conséquent dans le développement Drupal, est d'utiliser la technologie headless. La tendance récente, dans le développement web en général, et par conséquent dans le développement Drupal, est d'utiliser la technologie headless.

    Écrit par Mihail Shahov
    Aug 07, 20238 min read
    Embaucher des développeurs de logiciels spécialisés (équipes)

    Blog

    Embaucher des développeurs de logiciels spécialisés (équipes)

    Vous en avez assez d'augmenter les dépenses de votre équipe de développement interne ? Pourquoi ne pas faire appel à une équipe dédiée pour 40 à 60 % du coût ?

    Écrit par Mihail Shahov
    Aug 07, 20233 min read
    L'importance du bon partenaire de développement dans le cycle de vie de votre logiciel

    Blog

    L'importance du bon partenaire de développement dans le cycle de vie de votre logiciel

    La réussite à portée de main : L'art de choisir le partenaire idéal pour le développement de logiciels. Découvrez le rôle essentiel des partenaires dans le développement de logiciels, les secrets du retour sur investissement et restez à la pointe des tendances du secteur dans cet article incontournable.

    Écrit par Mihail Shahov
    Sep 26, 202310 min read
    Tutoriel du module Config ignore pour Drupal

    Blog

    Tutoriel du module Config ignore pour Drupal

    Parfois, nous ne voulons pas que nos configurations soient partagées dans la base de code. Que faire dans ce cas ?

    Écrit par Ivaylo Tsandev
    Aug 08, 20237 min read
    Dévoiler le duo de puissance : Next.js comme frontend Headless de Drupal 10

    Blog

    Dévoiler le duo de puissance : Next.js comme frontend Headless de Drupal 10

    Découvrez la synergie dynamique entre Drupal 10 et Next.js, alors que cette puissante combinaison redessine le paysage du développement web. Next.js, un framework open-source basé sur React, est intégré de manière transparente en tant que frontend headless de Drupal 10, offrant une pléthore d'avantages. De l'amélioration des performances grâce à des fonctionnalités telles que le fractionnement automatique du code et le rendu côté serveur à la conception flexible et aux capacités de référencement, cette collaboration permet aux développeurs de créer des applications web très performantes, évolutives et visuellement attrayantes. La gestion efficace du contenu de Drupal 10 associée à l'adaptabilité de Next.js aux tendances garantit une approche de développement de pointe, positionnant ce tandem à l'avant-garde des pratiques modernes de développement web. Embrassez l'avenir avec la combinaison Drupal 10 et Next.js, redéfinissant la façon dont nous abordons et créons des expériences en ligne dynamiques.

    Écrit par Todor Kolev
    Feb 09, 20246 min read
    Comment nous avons optimisé la note globale d'un SSL de B à A+.

    Blog

    Comment nous avons optimisé la note globale d'un SSL de B à A+.

    L'optimisation de la mise en œuvre du protocole SSL permet à tous les clients d'ouvrir et de parcourir le site en toute sécurité, sans avertissement.

    Écrit par Mihail Shahov
    Aug 07, 20233 min read

    PRENDRE CONTACT

    Vous avez un projet à lancer ?