Quelles sont les meilleures pratiques pour installer des extensions tierces dans Magento 2?

16

En travaillant sur un projet client pour Magento 2 - j'ai découvert de nombreuses méthodes de chargement et de suivi des extensions tierces.

Dans cette hypothèse, en supposant que nous utilisons la méthode d'installation de l'intégrateur (composer!), Quelles sont les meilleures pratiques pour gérer les extensions tierces?

Jusqu'à présent, chaque extension que j'ai achetée ou téléchargée avait son propre fichier composer.json - et je connais au moins trois façons différentes que les auteurs d'extensions recommanderaient d'installer leur extension:

  1. Copiez ces fichiers dans l'application / le code
  2. Copiez ce zip dans un dossier, ajoutez-le comme référentiel d'artefacts et exigez-le
  3. Ajouter ce référentiel en ligne (avec / sans authentification) et l'exiger

Jusqu'à présent, je suis tombé sur 1 & 2 et je suis en quelque sorte en train de soupçonner que # 3 existe. Mais ensuite, notant que ceux qui ont suggéré # 1, j'ai trouvé que vous pouvez avoir un référentiel "chemin" - déplacé mes extensions de l'application / du code vers le même dossier, j'ai décidé de mettre ces artefacts, et je l'ai exigé de cette façon.

Dans ce processus, la configuration de mes référentiels ressemble à ceci:

"repositories": {
    "0": {
        "type": "composer",
        "url": "https://repo.magento.com/"
    },
    "artifacts": {
        "type": "artifact",
        "url": "artifacts"
    },
    "third-party": {
        "type": "path",
        "url": "artifacts/*/*"
    },
},

Ma question est donc la suivante: quelle est la meilleure pratique ici? Comment gérez-vous les extensions tierces?

Jusqu'à présent, je crois que la façon dont je le fais est la meilleure façon - ne serait-ce que parce que leur composer.json est lu et que tout conflit de dépendance (ou contraintes de version PHP) deviendra apparent - mais je ne pense pas que ce soit suffisamment définitif.

Navarr
la source

Réponses:

8
  • Installer le module via composer est le meilleur moyen pour Magento 2. Parce qu'il y a de nombreux avantages si nous installons le module via composer.

  • Si vous souhaitez mettre à niveau le module, il vous suffit de changer la version dans le composer.jsonfichier et d'exécuter la composer updatecommande sur rootMagentoento.

  • Pendant l'installation manuelle, vous devez d'abord télécharger le module et remplacer les anciens fichiers et exécuter la setup:upgradecommande pour mettre à niveau le module.

  • Tous les modules installés via composer sont téléchargés dans le dossier du fournisseur.

  • Magento utilise l' URL https://repo.magento.com/ par défaut pour télécharger le module Si vous achetez un module sur Magento Marketplace.

  • Si vous achetez un module sur un site Web tiers. Vous devez ajouter un référentiel dans composer.json pour télécharger et installer un module.

Par exemple

"repositories": {
    "0": {
        "type": "composer",
        "url": "https://repo.magento.com/" //Default Magento Repositry
    },
    "thirdparty-module": {
        "type": "composer",
        "url": "https://mymodule.thirdparty.com/" //Third Party Repositary
    }
},

À mon avis, le compositeur est le meilleur moyen d'installer le module dans Magento 2.

Installez le module tiers via le compositeur:

  1. Exécutez cette commande pour ajouter un nouveau référentiel dans conposer.json

composer config repositories.thirdparty-module git https://thirdparty-composer-url.com

  1. Exécutez maintenant cette commande pour ajouter le composant et la version du module dans composer.json

le compositeur requiert [nom-composant]: [version]

Forex.  composer require prince/helloword:1.0.0
  1. Exécutez maintenant la mise à jour du compositeur pour télécharger le module à partir du référentiel.

mise à jour du compositeur

  1. Maintenant, exécutez setup:upgrade pour installer et enregistrer le module dansconfig.php

configuration de php bin / magento: mise à niveau

Prince Patel
la source
1

Bizarrement, toutes les réponses manquent au point que vous avez identifié les artefacts comme une possibilité:

https://getcomposer.org/doc/05-repositories.md#artifact

Les fournisseurs de modules peuvent ne pas avoir de référentiel que vous pouvez utiliser, donc les artefacts sont une réponse. La majorité (que j'ai rencontrée) vous donnera un package zip pour les fichiers, donc l'utiliser avec le compositeur via des artefacts IMHO est le moyen le plus simple.

Bien sûr, vous pouvez présenter votre propre référentiel pour les fichiers de modules tiers, mais personnellement, je ne vois pas l'intérêt d'aller plus loin sur ceux-ci.

Je pense qu'il vaut la peine de mentionner si vous les ajoutez au dossier de l'application et validez les fichiers, ou avec votre propre référentiel, vous pouvez facilement repérer les fichiers qui ont changé entre les versions de l'extension tierce.

Quoi qu'il en soit, j'ai trouvé cet article sur l'utilisation des arficats https://magently.com/blog/magento-2-the-right-way-to-install-external-modules/ afin que d'autres utilisent également ce flux.

Olli Tyynelä
la source
-1

Il y a deux façons de le faire, veuillez les trouver ci-dessous.

(1) Installtion automatique utilisant le compositeur

Achat du produit à télécharger sur le marché et vérifiez le nom du composant à partir des informations sur le produit téléchargé et utilisez l'exemple de code ci-dessous pour mettre à jour le fichier composer.json à la racine de l'application.

Remarque: N'oubliez pas d'inclure le fichier composer.lock à inclure dans votre commit git.

Référence officielle: http://devdocs.magento.com/guides/v2.0/cloud/howtos/install-components.html

(2) Installation manuelle

Téléchargez le fichier zip du composant à partir de vos téléchargements et décompressez-le à un emplacement temporaire et vérifiez son fichier registration.php, vous y verrez le nom du fournisseur et le nom du composant. Créez une structure de répertoires similaire à l'intérieur.

app/code/VendorName/ComponentName

Extrayez votre fichier zip à l'intérieur de la structure de répertoires ci-dessus et exécutez les commandes ci-dessous à partir du répertoire racine de votre application pour activer le module.

php bin/magento module:enable VendorName_ComponentName
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush
php -R 777 var/

Vérifiez que le module est activé à l'aide de la commande ci-dessous. Il affichera la liste de tous les modules activés et désactivés.

php bin/magento module:status

J'espère que cela t'aides!

Kapil Yadav
la source
Je n'ai pas encore trouvé la bonne réponse, bien que je sois plus confus à ce sujet.
Kapil Yadav
-2

J'ai installé des extensions pour magento2 en plaçant l'extension sous app / code et le site Web a bien fonctionné pour moi, donc les installer en plaçant l'extension sous app / code est l'un des moyens d'installer des extensions!

Ledian Hymetllari
la source
-2

La meilleure pratique pour gérer l'extension tierce est de télécharger le fichier zip et d'importer le zip dans le dossier d' application / code et de le décompresser.

Après cela, utilisez les commandes suivantes

  1. module php bin / magento: activer _
  2. configuration de php bin / magento: mise à niveau
  3. configuration de php bin / magento: di: compile
Rishabh Rk Rai
la source
Soyez averti: ce n'est PAS une meilleure pratique. L'installation de modules via app/coden'est pas à recommander plutôt que d'utiliser composer. Utilisez composerplutôt.
Jisse Reitsma