RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

Créer votre premier package pour Composer

Progi1984 - Commentaires (9)

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

1. Mika, le 3 juin 2014 à 09:01

Merci pour ce tutoriel, mais comment gère-t-on les versions de nos package ?
Par défault c’est dev-master 🙁

2. Progi1984, le 3 juin 2014 à 12:58

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.

3. Mika, le 3 juin 2014 à 15:07

Ok merci de l’information, je vais essayer de créer des tags sur github 😉

4. Mika, le 4 juin 2014 à 08:56

Pour info mon package: https://packagist.org/packages/mkframework/mkframework

5. Progi1984, le 4 juin 2014 à 09:01

Bien joué… Donc ce sont bien les tags qui permettent de gérer les numéros de version.

6. Mika, le 4 juin 2014 à 12:33

Oui ce sont bien les tags, attention d’ailleurs

7. Progi1984, le 4 juin 2014 à 12:56

@Mika : Attention à quoi ?

8. Mika, le 4 juin 2014 à 17:41

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 😉

9. Progi1984, le 4 juin 2014 à 17:42

@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

Commentaire :