J'ai vu quelques choses flotter sur Internet impermanent (c'est-à-dire Twitter) que certaines modifications récentes de Magento 2 permettent d'installer un module dans le répertoire du vendeur via Composer, et Magento 2 verra votre module sans aucun lien symbolique. .
Si cela est vrai, existe-t-il un composer.json
fichier "minimum " flottant pour les développeurs de modules à utiliser avec leurs modules pour permettre aux utilisateurs de Magento 2 de les installer dans leurs systèmes?
Réponses:
Mise à jour
Il semble que plusieurs choses aient changé avec quelques derniers changements (7 octobre) dans la branche develop. Il semble désormais possible de prendre en charge un module résidant dans le répertoire des fournisseurs.
J'ai créé deux exemples d'installation de modules. Un qui copie les fichiers dans app / code et un autre qui enregistre le module où il réside dans le répertoire du fournisseur.
Stratégie de copie: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Stratégie d'enregistrement: https://github.com/mttjohnson/magento2-sample-module-minimal-register
À des fins de développement, je pense que l'utilisation de la stratégie d'enregistrement est plus utile parce que les fichiers qui sont exécutés par Magento peuvent être directement modifiés, testés puis réintégrés dans le référentiel du module.
Réponse originale
Si vous avez un
composer.json
fichier pour votre package de compositeur de module qui contient un type de,magento2-module
alors les fichiers par défaut seront copiés dans un répertoire mappé spécifié dans leapp/code
répertoire.Dans cet exemple composer.json, le nom du package composer
vendorname/module-name
entraînera le placement des fichiers du package composervendor/vendorname/module-name
.Le type spécial de
magento2-module
est implémenté en tant que plugin compositeur dans le package magento / magento-composer-installer . C'est pourquoi je l'ai répertorié dans la section requise. C'est ce plugin compositeur qui copie les fichiers dans leapp/code
répertoire magento approprié .La
extra: {map: [["composerDir","MagentoDir"]]}
section est référencée par le programme d'installation du plug-in composer pour savoir quelle partie de votre package composer à mapper à quelle partie de la structure de votre répertoire magento. Dans l'exemple fourni, cela prendraitvendor/vendorname/module-name/module
et copierait les fichiers à partir de làapp/code/VendorName/ModuleName
.la source
Il semble que quelque chose comme ça devrait faire l'affaire.
La clé ici est la section du chargeur automatique. Il configure un chargeur automatique PSR-4 qui pointe vers vos fichiers de classe et charge automatiquement votre fichier
registration.php
. Lorsque composer dépose les fichiers chez le fournisseur et recrée les fichiers de chargement automatique, Magento devrait pouvoir voir votre module.Un effet secondaire soigné de cela - le code n'a plus besoin d'être
app/code
!la source