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 !