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: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.
var/generation
?
Action
test. - Chargement de la page, erreur. - Supprimé di
et generation
dossiers, rechargés, fonctionne. - Ajouter une nouvelle dépendance, recharger la page, erreur. Cependant aucun di
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é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:compile
commande après chaque fois que vous ajoutez une dépendance en supprimant simplement les dossiers var/di
et avant de recharger la page .var/generation
D'après mes propres tests, Magento recréera le var/generation
dossier, mais pas le var/di
dossier jusqu'à ce qu'il setup:di:compile
soit à nouveau exécuté. Cela signifie que vous ne devriez avoir que le var/generation
dossier à 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:deploy
ou `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.