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 le app/code
répertoire.
{
"name": "vendorname/module-name",
"type": "magento2-module",
"require": {
"magento/magento-composer-installer": "*"
},
"extra": {
"map": [
[
"module",
"VendorName/ModuleName"
]
]
}
}
Dans cet exemple composer.json, le nom du package composer vendorname/module-name
entraînera le placement des fichiers du package composer vendor/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 le app/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 prendrait vendor/vendorname/module-name/module
et copierait les fichiers à partir de là app/code/VendorName/ModuleName
.