Debut de la migration vers composer (en live)

Bonjour,

J’ai commencé a passer jeedom pour une vrai utilisation de composer (et plus comme la avec un truc tout sale en dur dans le repo). Les sites jeedom (market, compatibility et translate) y sont deja depuis quelques jours (mais c’est plus simple pour eux vu que c’est du docker). Le core vient d’y passer :

  • à l’installation il installe composer
  • à l’installation il va virer le dossier vendor et lancer un composer install
  • à l’update (alpha/beta) il check si composer et la et l’installe si il faut (je gere pas encore l’update). Au passage je lance aussi le script nodejs pour verifier que tout est bon
  • à l’update toujours jeedom lance un composer install (d’ailleurs si ya des experts sur composer au niveau des arguments pour optimiser je suis preneur)

Voila pour les 1er étape, les prochaines étapes seront de virer le dossier vendor du core et normalement pour le core on devrait etre bon (peut etre juste mieux fixer les versions en fonction des bugs).

Les étapes suivantes seront ensuite de gerer composer dans les dépendances des plugins (ca devrait pas etre trop compliqué car ressemble beaucoup a npm).

5 « J'aime »

Hello Loic,

Et pour les néophytes, quel intérêt de passer sur composer du coup ?

Merci

C’est plus standard surtout, ca fait un repo git plus petit aussi, mise à jour plus rapide (car moins de fichier) et plus simple a mettre jour les dépendances.

Merci Loïc, très bonne direction pour le Core.

Pour les plugins, quelle est la stratégie à suivre ? Mon unique plugin s’appuie sur une dépendance de Jeedom Core indiqué sur composer.json (master) :
"league/oauth2-client": "*"
mais elle n’est plus mentionnée en Beta :frowning:

Peut-on utiliser les dépendances du Core dans nos plugins ?
Devons-nous les gérer au niveau du plugin ? Y a t-il un exemple à suivre ?

Pour ta question, je suggère :

 composer install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader

Salut,

Pour les plugins j’ai pour projet de le gérer dans le package.json comme pour les autres dépendances (surtout comme npm les 2 étant très proche au final). Pour le moment par contre il va falloir que tu l’ajoutes toi dans les sources du plugin le temps que je fasse cette gestion. J’espère avoir le temps de le faire pour la 4.4.

Merci pour la ligne de commande je vais mettre a jour le core la dessus.

Bonjour,

Pour info je viens de pousser la gestion de composer dans les dépendances, ca marche comme pour models sauf qu’au lieu de npm en clef il faut mettre composer. A noter que j’ai pas encore eu le temps de tester (ca sera tester dans les semaines a venir).

1 « J'aime »

Bonjour,
Je viens de faire des tests sur un plugin tout semble bon. Il faut donc mettre un fichier composer.json a la racine de votre plugin avec ce que vous voulez dedans et dans le package.json mettre:

{
    "composer" : {
      "plugins/tado"  : {}
    }
  }

En remplaçant Tado par l’id de votre plugin bien sur.

2 « J'aime »

Bonjour Loic

Je me renseigne pour faire du composer sur mon plugin.
Le fichier package.json doit être à la racine du plugin ?

Attention je pense qu’il y a un peu de consusion:

  • package.json sans s c’est le fichier de dep pour nodejs, il est où tu veux en fait mais généralement dans ton dossier /resources (ou sous-dossier)
  • packages.json c’est le fichier pour les dépendances d’un plugin sous jeedom, il est toujours dans le dossier /plugin_info
  • composer.json c’est le fichier pour les dépendances php, à nouveau il est où tu veux
    moi j’en ai un à la racine de mon projet et j’inclus et fige les dépendances au moment du dev, mon dossier vendor est du coup présent dans l’archive du plugin (en tout cas c’est comme ça pour l’instant, on verra si ca change)

donc dans cette phrase:

je pense qu’il fallait lire packages.json qui est donc par définition /plugin_info/packages.json

Effectivement il y une petite nuance que je ne savais pas.:sweat_smile:

ce n’est que mon hypothèse, je n’ai pas testé ni validé :slight_smile:

Ah ok. Parce que moi je voudrais utiliser php-mqtt
Sur mon plugin.