Archives de
Étiquette : composer

Publier une librairie sur packagist

Publier une librairie sur packagist

En PHP le gestionnaire de dépendance le plus utiliser est composer. Composer utilise par défaut packagist.org pour chercher une librairie. Nous allons voir comment ajouter une librairie sur packagist afin de la rendre disponible au plus grand nombre.

Création de la librairie

Nous allons donc commencer par créer notre librairie dans un dossier avec un composer init, il nous sera alors demandé les informations suivantes :

  • nom du projet, celui utiliser lors du require
  • auteur
  • stabilité minimum
  • type de projet
  • licence
  • définition des dépendances
  • définition des dépendances de développement

Dans mon cas voilà ce que ça donne :

{
    "name": "dayofr/sfdc-rest-client",
    "description": "A SalesForce REST API PHP Wrapper",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "Dayo Fr",
            "email": "dayo@dayo.fr"
        }
    ],
    "require": {}
}

Nous créons ensuite un dossier src et tests afin de pouvoir définir les sections autoload et autoload-dev. Grace a ces définition nous pourrons utiliser les namespace PHP. Dans le code ci-dessous nous disons que les fichier situé dans le dossier src on pour namespace Dayofr :

"autoload": {
    "psr-4": {
      "Dayofr\\": "src/"
    }
  },
"autoload-dev": {
    "psr-4": {
      "Dayofr\\Tests\\": "tests/"
    }
  }

Les fichier PHP à la racine de src pourrons alors déclarer le namespace suivant :

<?php declare(strict_types=1);

namespace Dayofr;

Dans le cas où nous avons des sous dossiers sous la forme src/Responses/Limits le namespace serais alors :

<?php declare(strict_types=1);

namespace Dayofr\Responses\Limits;

Il en va de même pour les tests :

<?php

namespace Dayofr\Tests\Authentication;

Notre code peux donc est utiliser par l’autoloader de composer via :

use Dayofr\Authentication\LoginData;

Test en local

Afin de tester que tout fonctionne, vous pouvez créer un autre projet et ajouter une dépendance vers la libraire. Il nous faut rajouter un repository de type path. Pour cela modifier le composer.json de votre projet de test d’une des deux façon ci-dessous:

avec un lien symbolique :

"repositories": [
    {
        "type": "path",
        "url": "../sfdc-rest-client/",
    }
],

où en copiant le fichiers:

"repositories": [
    {
        "type": "path",
        "url": "../sfdc-rest-client/",
        "options": {
            "symlink": false
        }
    }
],

Il ne nous reste plus qu’a faire un

composer require dayofr/sfdc-rest-client:dev-master

Nous avons ici notre librairie copiée dans le dossier vendor. Vous pouvez alors utiliser votre librairie.

Déployer sur packagist

Pour ceci il vous faudra déployer votre code sur GitHub. Une fois fait, direction packagist.org. Premier étape, la connexion avec GitHub:

Ensuite direction la page d’ajout de librairie dans laquelle vous mettez l’url de projet sur GitHub:

Une fois envoyé, vous êtes redirigé vers la page de votre librairie, ou on vous dit que votre libraire va bientôt être ajouté.

Une fois ajouter vous avez plus d’information sur la page:

Suivez le lien en haut de la page pour activer le hook GitHub afin d’avoir la librairie à jour sur packagist.

Si vous voulez faire une version de votre librairie il vous suffit de créer un tag dans git et la version apparaitra dans packagist.

Votre libraire est prête à être utiliser par le monde entier 🙂

Pour en savoir plus sur packagist direction la page about.

Mise à jour d’un projet composer

Mise à jour d’un projet composer

Peu de temps après la création de mon projet silex Symfony2 a été mis à jour. J’ai donc fait ma première mise à jour de mon projet avec composer.

Pour cela rien de plus simple, une petite commande et c’est bon.

Et voilà un projet à jour !

Installer Silex avec Composer

Installer Silex avec Composer

La première étape est bien entendu l’installation de composer. Rien de plus simple. Lancez un terminal puis allez dans le répertoire de votre projet et lancez

curl -s http://getcomposer.org/installer | php

Ensuite créez le fichier composer.json avec pour contenu:

{
    "require": {
        "silex/silex": "1.0.*"
    },
    "minimum-stability": "dev"
}

Ce fichier est utiliser pas composer afin de savoir quelles dependances télécharger pour le projet. Dans notre cas nous demandons Silex en version 1.0.*.

Afin d’installer silex lancez la commande suivante :

php composer.phar install

Un répertoire vendor avec les librairies utilisé par Silex vient d’être créé.

Afin d’avoir une page pour notre site créez un répertoire web puis un fichier index.php avec pour contenu :

<?php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/', function() {
    return 'Hello world!';
});

$app->run();

Une fois que vous accedez a votre cette page vous devriez voir « Hello world! » dans votre navigateur.