Dans quel cas devons-nous exécuter cette commande magento setup:di:compile
?
magento2
extensions
cli
MrTo-Kane
la source
la source
pub/static
Réponses:
Pendant le déploiement (c'est-à-dire lorsque des modifications ont été apportées à un système en mode production)
Notez qu'en mode production (versions 2.0.5 et antérieures) vous devez utiliser la compilation "multi-tenant". Corrigé dans 2.0.6 et versions ultérieures.
Voir: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
Vous pouvez également utiliser la compilation en mode développement, ce qui devrait accélérer le site, mais d'un autre côté, cela ralentit le développement, car vous devrez exécuter
bin/magento setup:di:compile
chaque fois que vous ajouterez de nouvelles classes avec des dépendances (paramètres du constructeur) ou des dépendances modifiées des classes existantes .C'est facultatif, et ce n'est probablement pas une bonne idée. Si vous avez déjà exécuté la compilation dans votre environnement de développement, supprimez les fichiers
var/di
pour la désactiver.la source
var/generation
?Action
test. - Chargement de la page, erreur. - Supprimédi
etgeneration
dossiers, rechargés, fonctionne. - Ajouter une nouvelle dépendance, recharger la page, erreur. Cependant aucundi
dossier n'est généré. - Supprimer àgeneration
nouveau, recharger, fonctionne. Conclusion: supprimez le dossier de génération après avoir ajouté des dépendances et vous n'aurez pas à exécutersetup:di:compile
. Si quelqu'un d'autre pouvait le confirmer, ce serait génial.Selon mon commentaire sur une autre réponse:
Vous pouvez éviter d'exécuter la
setup:di:compile
commande après chaque fois que vous ajoutez une dépendance en supprimant simplement les dossiersvar/di
et avant de recharger la page .var/generation
D'après mes propres tests, Magento recréera le
var/generation
dossier, mais pas levar/di
dossier jusqu'à ce qu'ilsetup:di:compile
soit à nouveau exécuté. Cela signifie que vous ne devriez avoir que levar/generation
dossier à supprimer.Curieusement, cela fonctionne également avec
pub/static/*
etsetup:static-content:deploy
. En effet, Magento semble créer des liens symboliques vers les fichiers nécessaires si le contenu statique est créé par rechargement de page, plutôt que CLI.Les employés de notre bureau ont rencontré des problèmes lors de l'exécution des commandes ci-dessus lors de l'utilisation de Docker pour Mac. Le traitement des fichiers était tout simplement trop lent. En utilisant les étapes ci-dessus, le développement devrait être beaucoup plus rapide.
Il est probablement préférable de noter que cela ne fonctionnera pas en mode production ou par défaut. C'est uniquement pour le développement. Comme mentionné par Fabian Schmengler, le rechargement initial de la page sera plus lent que la normale, mais ne devrait pas être aussi lent que l'exécution
setup:static-content:deploy
ou `setup: di: compile.Pour référence, j'utilise la version 2.1.5 .
la source
Tiré du blog d' Alan Storm .
Compilation d'injection de dépendance
Pour commencer, nous devons expliquer le problème que ces commandes tentent de résoudre. Lorsque vous expédiez un système Magento 2 en production, vous devez exécuter la commande suivante
Cette commande analyse le code de votre système et pré-génère un certain nombre de choses (principalement liées au système de gestion d'objets et à l'injection de dépendances) que Magento charge dynamiquement lorsque vous exécutez en mode développeur. Il s'agit à la fois de performances et de sécurité, et en discuter en détail dépasse le cadre de cet article.
la source