Dans quel cas devons-nous exécuter cette commande magento setup:di:compile?
pub/static
Dans quel cas devons-nous exécuter cette commande magento setup:di:compile?
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.
bin/magento setup:di:compile-multi-tenant
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:compilechaque 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/dipour la désactiver.
var/generation?
Actiontest. - Chargement de la page, erreur. - Supprimé diet generationdossiers, rechargés, fonctionne. - Ajouter une nouvelle dépendance, recharger la page, erreur. Cependant aucun didossier n'est généré. - Supprimer à generationnouveau, recharger, fonctionne. Conclusion: supprimez le dossier de génération après avoir ajouté des dépendances et vous n'aurez pas à exécuter setup: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:compilecommande après chaque fois que vous ajoutez une dépendance en supprimant simplement les dossiers var/diet avant de recharger la page .var/generation
D'après mes propres tests, Magento recréera le var/generationdossier, mais pas le var/didossier jusqu'à ce qu'il setup:di:compilesoit à nouveau exécuté. Cela signifie que vous ne devriez avoir que le var/generationdossier à supprimer.
Curieusement, cela fonctionne également avec pub/static/*et setup: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:deployou `setup: di: compile.
Pour référence, j'utilise la version 2.1.5 .
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
php bin/magento setup:di:compile
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.