Développer des plugins plus rapidement en séparant le frontend en un composant de thème

J’ai déjà posé la question sur la façon de configurer l’environnement local pour coder plus rapidement lors de la création d’un plugin, et je sais que d’autres l’ont fait aussi.

J’utilise un nouveau flux de travail qui fonctionne très bien, et j’ai pensé le partager au cas où il serait utile à d’autres. Il ne résout pas tout, mais rend les choses beaucoup plus agréables. Voici les détails :

Tout d’abord, mon problème précédent :

Pour développer un plugin, je devais coder à partir d’une instance locale de Discourse, et c’était très lent car : 1) tout changement de fichier nécessitait de recharger la page, et mon ordinateur le faisait très lentement lorsqu’il exécutait Discourse (environ 30 secondes par rechargement de page), 2) le site Discourse local pour le développement sur lequel je testais était très lent (lent à naviguer, etc.), et 3) tout changement dans le code backend du plugin nécessitait d’arrêter le serveur et de le redémarrer - et cela pouvait prendre quelques minutes. Pendant tout ce temps, le ventilateur de mon ordinateur tournait à plein régime.

En conséquence, il me fallait probablement une heure de codage pour faire ce que je pouvais normalement coder en 10 minutes avec un flux de travail fluide.


Ma Solution

Contrairement au développement d’un plugin, le flux de travail pour coder un composant de thème est génial, grâce au Discourse theme CLI. (Mes étapes pour l’utiliser sont ici.) C’est rapide et fluide.

Pourquoi coder un thème ou un composant de thème est tellement plus rapide et plus facile

Avec l’outil theme CLI, vous pouvez coder un thème localement, mais le “surveiller” (c’est-à-dire exécuter le thème) sur un site en direct (soit votre site réel, votre site réel mais juste en mode aperçu, soit un site de test en direct que vous avez configuré).

Vous n’avez donc pas besoin d’exécuter Discourse lui-même sur votre machine - et par conséquent, ma machine ne ralentit pas comme elle le ferait avec un plugin. Et chaque fois que vous apportez une modification, il vous suffit de rafraîchir le site en direct auquel vous êtes lié, et la modification est là.

Alors, j’ai réalisé : la plupart du temps lorsque je code un plugin, il s’agit en fait de choses côté front-end (fichiers hbs, fichiers javascript, etc.). Et seulement une petite partie est consacrée aux choses côté backend (configuration des routes, création de champs personnalisés, etc.).

Au lieu de tout coder ensemble, déplacez donc tout le codage front-end vers un composant de thème, pour profiter du flux de travail des composants de thème.

Lorsque je dois mettre à jour les choses côté backend dans le plugin, alors je dois à nouveau coder dans le plugin - mais cela ne représente qu’environ 20 % du temps (dans mon développement de plugin en tout cas). Me permettant ainsi de passer 80 % de mon temps avec le flux de travail beaucoup plus agréable des composants de thème.

Quand il sera temps de tout déplacer en production, je pourrai :
-garder le composant de thème et le plugin séparés, et les utiliser tous les deux sur le site Discourse pertinent, ou
-s’il est important d’avoir tout le code au même endroit, déplacer à ce moment-là le code du composant de thème dans le plugin. Certes, cela peut être un peu fastidieux, mais vous n’auriez à le faire qu’une fois que vous êtes prêt à mettre à jour pour la production, tout en profitant du flux de travail plus rapide des composants de thème.


C’est tout.

Ce n’est pas révolutionnaire. Mais cela a beaucoup amélioré quelque chose qui m’avait bloqué pendant un certain temps.

7 « J'aime »

Oui, c’est une bonne approche.

J’ai utilisé cette approche sur les aperçus de listes de sujets depuis un moment, en déplaçant autant de fonctionnalités que possible dans le TC et en le rendant autonome. Les fonctionnalités supplémentaires qui nécessitent des modifications de l’API sont ensuite intégrées dans un plugin et les utilisateurs sont encouragés à l’installer également pour en profiter (s’ils le peuvent).

Le seul problème avec cette approche est si vous partagez votre code et que la modification de l’API est une nécessité, alors vous devez vous assurer que quelqu’un installe les deux composants. Les séparer en deux n’est pas le moyen le plus pratique pour que les gens consomment votre travail, potentiellement, donc je pense toujours qu’en fin de compte, une seule installation de plugin reste la meilleure approche pour un travail open source de cette nature.

Si c’est juste pour votre propre site, alors oui, c’est génial !

3 « J'aime »

Oui, il y a certainement des situations où, en fin de compte, vous voulez une seule base de code. Le moment de lucidité que j’ai eu a été que, même si je veux une seule base de code à la fin, je pourrais coder tout le front-end dans le composant de thème, puis, une fois que cela fonctionne, le déplacer vers le plugin. Un peu fastidieux, mais dans l’ensemble bien mieux pour moi car je passe toujours la plupart de mon temps à coder dans le flux de travail du composant de thème.

2 « J'aime »