Quelles commandes de compilation sont nécessaires en mode développeur et quand?

24

Quelqu'un peut-il me donner des instructions sur l'exécution des commandes de compilation en mode développeur Magento 2? Je ne sais pas encore si je le comprends bien.

Dans les devdocs, le mode développeur est décrit comme suit:

  • Les fichiers de vue statique ne sont pas mis en cache; ils sont écrits dans le répertoire pub / statique de Magento à chaque appel

Cela signifie-t-il que chaque fichier individuel dans pub / static est généré lorsqu'il est demandé et que vous n'avez jamais besoin d'appeler setup:static-content:deploy? Cela contredit mon expérience. Ou puis-je supprimer des fichiers et ils seront régénérés? De plus, les images, les fichiers CSS et JS semblent être traités différemment.

La page de documentation du mode développeur ne dit rien sur la compilation de code, mais je pense qu'il y avait aussi une différence, il n'était donc pas nécessaire de s'exécuter setup:di:compileaprès toutes les modifications des di.xmlfichiers. Est-ce correct et si oui, comment fonctionne la génération de code en mode développeur?

En d'autres termes: à part le cache, quelles commandes dois-je exécuter après quels changements?

Fabian Schmengler
la source

Réponses:

27

Faites attention: j'ai expérimenté qu'en mode développeur, la suppression du pub/staticcassera le mécanisme car vous vous débarrassez du .htaccessfichier qui fait la magie dans ce dossier.

Si vous conservez le pub/static/.htaccessfichier en mode développeur, vous n'avez pas besoin d'exécuter de commande de compilation: Magento créera des liens symboliques vers des fichiers dès qu'ils seront demandés. Cela signifie que les modifications apportées aux actifs statiques seront immédiatement visibles, à condition que le cache soit également désactivé.

Vous pouvez supprimer le pub/static/frontendou à la pub/static/adminhtmlplace.

En mode par défaut, les actifs sont matérialisés dans un pub/staticsous-dossier, ce qui signifie qu'ils sont créés (copiés, pas de lien symbolique) à la première demande. Si vous les modifiez, vous devez vider le cache pour les mettre à jour.

En mode production, les actifs ne sont pas matérialisés (provoquant une erreur HTTP 404 sur demande) jusqu'à ce que vous exécutiez la bin/magento setup:static-content:deploycommande.

J'espère que ça aide.

Alessandro Ronchi
la source
Et la compilation DI?
Erfan
@Erfan que voulez-vous dire plus précisément?
Alessandro Ronchi
2
La question pose également des questions sur l'effet du mode de déploiement sur la compilation DI. Je viens de faire un test rapide, et si vous êtes en mode développeur, vous n'avez pas besoin de compiler DI pour que vos modifications di.xmlapparaissent (la génération de code se fait à la volée par page-hit?). pensé que ce serait un bon ajout à votre déjà bonne réponse!
Erfan
Vous avez raison @Erfan
Alessandro Ronchi
1+ Merci frère. A fonctionné comme un charme. J'ai eu une très mauvaise expérience en exécutant le déploiement de commandes à plusieurs reprises afin d'obtenir mes modifications de moins en CSS, même en mode développeur. J'ai copié .htaccess d'un autre projet et collé à l'emplacement mentionné. Khalaaas!
Umar Yousaf
4

d'après mon expérience, vous n'avez pas besoin d'exécuter de commandes pour la génération de code / fichier statique en mode développeur.

Si les fichiers statiques n'ont pas été générés, il peut y avoir un autre problème.

Je vois deux raisons à cela à première vue:

  • le mode développeur ne fonctionne pas correctement. peut-être que l'activation a échoué pour une raison quelconque
  • la réécriture des fichiers statiques sur le pub / static.php ne fonctionne pas
David Verholen
la source
1
Mon moins de fichier dans pub / statique n'est pas régénéré. Avez-vous ce problème? Comment le rendre auto-régénéré
mrtuvn
Il est important que le mode développeur soit actif et que les réécritures fonctionnent également, car toute demande de fichiers statiques est d'abord réécrite dans pub / static.php qui génère ensuite le fichier (en mode développeur) sous pub / static s'il n'est pas déjà présent
David Verholen
4

Cela signifie-t-il que chaque fichier individuel dans pub / static est généré lorsqu'il est demandé et que vous n'avez jamais besoin d'appeler setup:static-content:deploy? Cela contredit mon expérience. Ou puis-je supprimer des fichiers et ils seront régénérés?

Oui. Mais selon mon expérience, cela ne fonctionne pas la plupart du temps. Ça pourrait être un bug. La meilleure solution consiste à supprimer le pub/staticcontenu et à déployer à nouveau le contenu statique chaque fois que vous changez de fichier statique (js, css, html, etc.) même si vous avez déjà activé le mode développeur. Ma propre question à ce sujet.

Janaka Dombawela
la source
Cela dépend de la façon dont vous le voyez. Si vous souhaitez exécuter setup: static-content: déployer chaque fois que vous apportez une modification, il vous faudra des années pour terminer un projet car, fondamentalement, vous créez chaque fichier pour votre magasin lorsque vous ne mettez à jour qu'un seul fichier. Donc, ma solution était d'écraser les fichiers dans pub / static et de vider le cache pour voir mes changements. Une fois que je suis satisfait de mes résultats, je vais accéder à mes fichiers de thème ou de module personnalisé pour remplacer mes fichiers principaux, puis exécuter setup: static-content: deploy pour mettre à jour mes fichiers statiques.
Wolfgang Leon
4

Juste pour clarifier entre les trois modes différents (source: cours Magento U Fundamentals). En gras, les points spécifiques liés à votre question.

mode développeur

  • La matérialisation des fichiers statiques n'est pas activée.
  • Exceptions non détectées affichées dans le navigateur
  • Exceptions levées dans le gestionnaire d'erreurs, non enregistrées
  • Connexion au système var/report, très détaillée.

Vous devez utiliser le mode développeur lorsque vous développez des personnalisations ou des extensions. Le principal avantage de ce mode est que les messages d'erreur sont visibles pour vous. Il ne doit pas être utilisé en production en raison de son impact sur les performances. En mode développeur, les fichiers de vue statique sont générés chaque fois qu'ils sont demandés. Ils sont écrits dans le pub/staticrépertoire, mais ce cache n'est pas utilisé. Cela a un impact important sur les performances, mais toutes les modifications qu'un développeur apporte pour afficher les fichiers sont immédiatement visibles.

Les exceptions non détectées sont affichées dans le navigateur, plutôt que d'être enregistrées. Une exception est levée lorsqu'un abonné à un événement ne peut pas être appelé.

La connexion au système var/reportest très détaillée dans ce mode.

Mode de production

  • Phase de déploiement sur le système de production; la plus haute performance
  • Les exceptions ne sont pas affichées pour l'utilisateur - écrites uniquement dans les journaux.
  • Ce mode désactive la matérialisation des fichiers statiques.
  • Le docroot Magento peut avoir des autorisations en lecture seule.

Vous devez exécuter Magento en mode Production une fois qu'il est déployé sur un serveur de production.

Le mode de production offre les meilleures performances dans Magento 2.

L'aspect le plus important de ce mode est que les erreurs sont enregistrées dans le système de fichiers et ne sont jamais affichées pour l'utilisateur. Dans ce mode, les fichiers de vue statique ne sont pas créés à la volée lorsqu'ils sont demandés; à la place, ils doivent être déployés dans le pub/staticrépertoire à l'aide de l'outil de ligne de commande. Les pages générées contiendront des liens directs vers les ressources de page déployées.

Toutes les modifications apportées aux fichiers d'affichage nécessitent de réexécuter l'outil de déploiement.

Étant donné que les fichiers de vue sont déployés à l'aide de l'outil CLI, l'internaute doit avoir besoin d'un accès en écriture. Le pub/staticrépertoire Magento peut avoir des autorisations en lecture seule, ce qui est une configuration plus sécurisée sur un serveur accessible au public.

Mode par défaut

  • Utilisé quand aucun autre mode n'est spécifié
  • Masque les exceptions de l'utilisateur et les écrit dans les fichiers journaux
  • La matérialisation des fichiers statiques est activée.
  • Non recommandé / non optimisé pour la production: la mise en cache a un impact négatif sur les performances.

Comme son nom l'indique, le mode par défaut est le fonctionnement du logiciel Magento si aucun autre mode n'est spécifié.

Dans ce mode, les errros sont enregistrés dans des fichiers var/reportset ne sont jamais montrés à un utilisateur. Les fichiers de vue statique sont matérialisés à la volée puis mis en cache.

Contrairement au mode développeur, les modifications du fichier de vue ne sont pas visibles tant que les fichiers de vue statique générés ne sont pas effacés.

Le mode par défaut n'est pas optimisé pour un environnement de production, principalement en raison de l'impact négatif sur les performances des fichiers statiques qui se matérialisent à la volée plutôt que de les générer et de les déployer au préalable .

En d'autres termes, la création de fichiers statiques à la volée et leur mise en cache ont un impact sur les performances supérieur à leur génération à l'aide de l'outil de ligne de commande de création de fichiers statiques.

Raphael chez Digital Pianism
la source