Connectes-toi pour publier un commentaire.
Publié le 26/10/2020 à 20:05. Mise à jour le 31/10/2020 à 16:55.
Un bundle pour Symfony qui intègre league/commonmark.
Publié le 26/10/2020 à 20:05. Mise à jour le 31/10/2020 à 16:55.
Un bundle pour Symfony qui intègre league/commonmark.
J'ai récemment publié un bundle pour Symfony (mon premier), je vous propose aujourd'hui d'en faire la présentation.
Pour ceux qui veulent juste voir le code: AymDev/CommonMarkBundle.
J'écris beaucoup de contenu sur mon site en MarkDown: les cours et les articles. C'est très pratique, et je ne dois pas être le seul à le penser puisque c'est utilisé sur GitHub, StackOverflow, ...
Jusqu'à présent j'utilisais ParseDown (qui est très bien et simple à utiliser), mais je voulais faire une chose particulière: faire ouvrir les liens externes dans un nouvel onglet.
En recherchant, je suis tombé sur une extension: taufik-nurrohman/parsedown-extra-plugin.
Sauf que la librairie n'est pas disponible sur Packagist et ne respecte pas le versioning sémantique. J'ai donc pensé à chercher des alternatives à ParseDown.
Très vite j'ai trouvé la librairie de la PHP League: CommonMark. C'est également facile à utiliser, mais ça fourni des extensions dont une pour les liens externes !
J'avais fait mon choix. Mais ensuite, comment intégrer ça dans Symfony ?
De par l'utilisation de base de la librairie, j'ai pensé écrire un peu de configuration manuelle de services dans mon services.yaml. Mais avec la multitude d'extensions et les configurations différentes que j'aurais pu faire, j'ai pensé qu'un bundle simplifierait les choses.
Le problème: pas de bundle officiel, et ceux que j'ai pu trouver utilisent league/commonmark en v0.x, ou ne sont pas disponibles sur Packagist, ou ne permettent pas la gestion de plusieurs "converters".
Conclusion: faire mon propre bundle.
Je n'avais jamais créé de bundle auparavant. J'ai lu la documentation de Symfony à ce sujet, commencé le développement, pour finir par pleurer lors de la réalisation de la configuration.
J'ai donc pris un cours sur le fonctionnement du conteneur de services, sa compilation en cache, les extensions de bundles, compiler pass, ...
Puis j'en suis finalement arrivé à bout malgré quelques erreurs !
Voici donc AymDev/CommonMarkBundle !
Toute la documentation est présente sur le README. Il règle ce que je n'avais pas trouvé ailleurs:
aymdev/commonmark-bundle
league/commonmark
en v1.5 minimumSi vous avez lu jusque là, sachez que cet article a été converti par un converter configuré par le bundle, et qu'un autre se charge des commentaires.
Il est tout de même important de mentionner les projets utilisés pour l'affichage de mon contenu:
N'hésitez pas à donner votre avis si vous l'essayez !
Connectes-toi pour publier un commentaire.
K4gur0
16/01/2021 - 02:58
Félicitation Aymeric pour ton first bundle ! Ça me donne envi de m'y lancer, un de ces 4 je publierais les miens aussi :p
Ça mérite une étoile en plus sur ton Repo Github
Good job :)
bogdanradoi
04/11/2020 - 10:37
Hello Aymeric, ça à l'air TOP
ton bundle Markdown. Je vais le tester. :)