PRÉSENTATION DU COURS

Comprendre les packs en Symfony

Comprendre les packs pour gérer efficacement ses dépendences

Unpack the pack

Jusqu'à présent nous avons installé des dependences sous forme de pack, Mais qu'est-ce que c'est ?

Les packs sont en fait des lots de dépendences qui sont centrées autour d'un sujet. Par exemple, notre pack debug que nous avons installé via composer précédement n'est rien d'autre qu'une collection de librairies !

Pour vérifier, vous pouvez vous rendre sur symfony.sh ou directement à sur le repository du pack.

Il n'y a qu'un seul fichier composer ? 🤔

Oui, c'est normal ! Comme dit précédement, les packs sont seulement un ensemble de dépendences regroupées pour faciliter l'installation.

Donc en faisant composer require debug, vous installez en fait toutes ces librairies :

  • symfony/debug-bundle
  • symfony/monolog-bundle
  • easycorp/easy-log-handler
  • symfony/profiler-pack
  • symfony/var-dumper

Oui, mais moi j'ai besoin d'avoir une version particulière, parceque Jean-Charles à installé quelque chose de spécial qui fonctionne qu'avec cette version ! 😱

Pas de soucis pour ça, vous pouvez très bien installer un pack et le "Dépaquer" 😏 (De toute façon Jean-Charles ne pense jamais à personne...)

Afin de dépaquer votre pack vous pouvez utiliser composer unpack debug avec le même alias que pour l'installation du pack.

Cette commande magique (Merci flex!), va faire les choses suivantes :

  • Extraire tous les composants du pack (dans notre exemple débug)
  • Effacer la mention du pack dans le fichier composer.json
  • Ajouter dans require ou require-dev (selon le pack) toutes les dépendences du pack

Ce qui fait que l'on passe de cette version de composer.json : (les petits points c'est pour éviter de noter ce qui change pas hein, ici le bug eest de voir le changement dans require-dev, vous ne devez pas avoir de petits points dans votre fichier)

{
    "type": "project",
    "license": "proprietary",
    "require": {
        ...
    },
    "require-dev": {
        "sensiolabs/security-checker": "^6.0",
        "symfony/debug-pack": "^1.0"
    },
    ...
}

à ça :

{
    "type": "project",
    "license": "proprietary",
    "require": {
        ...
    },
    "require-dev": {
        "easycorp/easy-log-handler": "^1.0.7",
        "sensiolabs/security-checker": "^6.0",
        "symfony/debug-bundle": "*",
        "symfony/monolog-bundle": "^3.0",
        "symfony/profiler-pack": "*",
        "symfony/var-dumper": "*"
    },
   ...
}

Incroyable ! Toutes les librairies et leur versions sont maintenant accessible ! 😏

Vous pouvez désormais enlever les paquets que vous ne voulez plus dans le fichier, ou modifier les versions à votre guise, vous êtes libres.

Vous avez désormais la maitrise totale de vos packs !

Envie de discuter du contenu ?

logo twitter @GarnierKristen