Créer votre premier package pour Composer
Composer est un outil de gestion de dépendances pour PHP. Cela vous permet de déclarer les librairies dont votre projet a besoin, et cela les installera dans votre projet pour vous.
Mais comment à partir d’une librairie la transformer pour Composer ?
Dans cet article, le but sera de transformer la classe YATSPHP pour l’intégrer dans Packagist.
Installation de Composer
On commence par télécharger l’installeur :
curl -sS https://getcomposer.org/installer | php
On le déplace pour un accès global :
mv composer.phar /usr/local/bin/composer
Description d’un package
Le nom d’un package est composé de cette facon : « vendor/packagename ». Ainsi, pour notre exemple, le « vendor » sera « Progi1984 », et le « packagename » sera « YATSPHP ».
La structure du dossier doit être facile à comprendre et permettre la maintenance facile du projet.
Donc à la racine, il y a un dossier « src » qui contient un dossier du « vendor » qui contient le fichier de classe « packagename ».php.
src - Progi1984 --- YATSPHP.php
Initialisation de votre package
Il faut d’abord vous placer dans le dossier racine du projet (celui qui contient le dossier src) et lancer un composer init.
[franck@eureka YATSPHP]$ composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (<vendor>/<name>) [franck/yatsphp]: progi1984/yatsphp Description []: Yet Another System of Template, but in PHP Author [Progi1984 <progi1984@gmail.com>]: Franck LEFEVRE <progi1984@gmail.com> Minimum Stability []: dev License []: Apache License Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? no Would you like to define your dev dependencies (require-dev) interactively [yes]? no { "name": "progi1984/yatsphp", "description": "Yet Another System of Template, but in PHP", "license": "Apache License", "authors": [ { "name": "Franck LEFEVRE", "email": "progi1984@gmail.com" } ], "minimum-stability": "dev", "require": { } } Do you confirm generation [yes]? yes Would you like the vendor directory added to your .gitignore [yes]?yes
On ajoute dans le composer.json deux clés :
- require : On définit PHP 5.3 comme pré-requis.
"require": { "php": ">=5.3.0" }
- autoload : On dit à Composer d’autoload tous les fichiers avec le namespace « Progi1984 » dans le dossier « src ».
"autoload": { "psr-0": { "Progi1984": "src/" } }
Envoyer votre package à Packagist
Après avoir commité le composer.json, ajouté après l’init, il faut aller se connecter sur packagist.org.
- On va sur la page pour soumettre un nouveau package : https://packagist.org/packages/submit
- Pour l’URL demandé, on prend l’URL Git du Repository : git@github.com:Progi1984/YATSPHP.git
- On soumet le formulaire et votre paquet est sur Packagist
A chaque nouveau commit, vous devrez forcer la mise à jour sur packagist à moins d’automatiser la mise à jour :
- Aller sur votre repository
- Aller sur la page « Settings »
- Aller sur l’onglet « Services Hooks »
- Choisir Packagist
- Remplir les informations :
- User : votre login de Packagist
- Token : vous pouvez le récupérer sur votre page de préférences sur Packagist.org
- Domain : packagist.org
- Valider
Et voilà, vous avez créer votre premier package avec Composer et vous l’avez proposé au téléchargement sur Packagist.
Commentaires
Merci pour ce tutoriel, mais comment gère-t-on les versions de nos package ?
Par défault c’est dev-master 🙁
Pour PHPWord, on ne l’indique pas du tout dans le composer.json. Ainsi Packagist et Composer prennent les différents tags de GitHub comme numéro de version.
Ok merci de l’information, je vais essayer de créer des tags sur github 😉
Pour info mon package: https://packagist.org/packages/mkframework/mkframework
Bien joué… Donc ce sont bien les tags qui permettent de gérer les numéros de version.
Oui ce sont bien les tags, attention d’ailleurs
@Mika : Attention à quoi ?
Mon commentaire a été coupé 🙁 (je reposte sans retour chariot) Attention à ne pas préfixer les tags avec par exemple « v ». Perso, j’avais commencé par créé v4.95, il affichait partout 4.95, mais on ne pouvait pas le recuperer avec composer install, j’ai renommé le tag en 4.95 (sans le v) et c’etait ok 😉
@Mika : Merci de l’information. Elle pourra être utile à d’autres. Et c’est vrai que pour PHPWord, nous ne mettons pas de « v » devant nos numéros de tag.
Ajouter un commentaire