Node.js utilise généralement webpack, afin de compiler ses fichiers. Et ça peut vite être un casse-tête à configurer ! Heureusement, tout va être extrêmement simple avec la librairie officielle de WordPress : create-block.
Sommaire du cours
Aujourd’hui, pour faire du JavaScript moderne, on a besoin d’outils en tous genres pour vérifier et compiler le code afin de le rendre compatible avec tous les navigateurs.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
Et tout cela nécessite généralement pas mal d’outils et beaucoup de configuration notamment via webpack, un outil qui permet d’orchestrer la compilation des différents fichiers en ressources statiques comprises par le navigateur.
On dit généralement que webpack est un module bundler pour JavaScript.
Create-block est un toolkit officiel créé par les contributeurs WordPress, basé sur Webpack, Node.js et NPM.
Il ne nécessite aucune configuration préalable et va mettre en place toute la structure nécessaire au développement de blocs Gutenberg avec React.
Il contient notamment plusieurs outils comme :
- webpack : qui va permettre de surveiller notre dossier et lancer les opérations nécessaires lors d’un changement de fichier ;
- Babel : qui compile le javascript moderne et en crée une version rétrocompatible ;
- React : la librairie JS de facebook utilisée par Gutenberg pour gérer l’éditeur visuel ;
- JSLint : qui permet de vérifier que notre code ne contient pas d’erreur ;
- Sass : le préprocesseur CSS qui compile nos syntaxes améliorées en CSS classique ;
- …
En d’autre termes, on installe le projet, on lance le compilateur, on commence à coder, et on oublie les soucis. Et ça, ça me plait !
Préparer un site local
Avant de vous lancer dans cette formation, je vous invite à installer un site local dédié à l’apprentissage des blocs.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
Pour cela, je vous recommande l’excellent LocalWP de WP Engine qui est gratuit et qui contient tout le nécessaire pour faire tourner WordPress sur votre machine.
LocalWP est disponible sur Windows, Mac et Linux. Pour le télécharger, c’est par ici :
Si c’est votre premier site, je vous invite à consulter le cours sur l’installation d’un site local de la formation Full Site Editing.
Alternativement, vous pouvez également utiliser DevKinsta ou encore Mamp si vous préférez.
Installer create-block et générer l’extension
Pour déclarer nos blocs Gutenberg, on va devoir créer une extension.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
C’est la bonne pratique officielle : c’est aux extensions de gérer les fonctionnalités supplémentaires de votre site, pas votre thème, car nos blocs sont considérés comme des fonctionnalités.
Mais pas d’inquiétude, puisque create-blocks va préparer la base de notre extension automatiquement ! C’est justement ce que l’on va voir tout de suite.
Rendez-vous dans le dossier /app/public/wp-content/plugins/ de votre site local grâce au bouton « Site Folder » de LocalWP.
De là, on va ouvrir notre Terminal afin de lancer la commande d’installation. Sur Mac OS, vous pouvez faire un clic droit sur le dossier « Plugins » et sélectionner « Nouveau terminal au dossier ».

Maintenant, on va saisir la commande suivante :
Vous pouvez bien entendu remplacer capitaine-blocks par le nom de dossier que vous souhaitez donner à votre extension.
Validez ensuite en appuyant sur « Entrée », validez en appuyant sur Y lorsque vous verrez « Ok to proceed ? » puis Entrée à nouveau et attendez quelques secondes.
Si tout s’est bien passé, vous devriez voir une ligne en vert commençant par « Done ».
Notez que le terminal vous explique qu’il existe plusieurs commandes rattachées au compilateur, comme :
npm start: pour démarrer le compilateur et travailler sur vos blocs ;npm run buildpour créer une version optimisée des scripts parée pour la production.
Maintenant, fermez votre terminal et ouvrez le dossier fraîchement créé dans votre éditeur de code favori : VS Code, Cursor, WebStorm…
Pour plus d’informations sur create-blocks, consultez la documentation, elle contient tous les détails sur ce package WordPress indispensable.
Activer votre extension
En parallèle, rendez-vous dans le menu « Extensions » de l’interface d’administration de WordPress et activez votre nouvelle extension.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
Sinon, vous allez vous demander pourquoi vous ne voyez pas vos blocs dans l’éditeur ! Et franchement, ça m’est arrivé au moins mille fois.
Vérifier que le slug d’extension n’est pas déjà pris sur .org
Vous savez ce qu’il m’est arrivé un jour ? À peine mon extension installé, WordPress m’informe qu’il y a une mise à jour de disponible. Impossible ! Et pourtant…
La raison est toute simple : j’ai utilisé le même slug qu’une extension déjà présente sur le répertoire officiel des extensions sur wordpress.org.
Pour éviter que cela vous arrive, vérifiez d’abord que le nom de dossier ne corresponde pas à une extension du répertoire. Pour cela, faites simplement une recherche depuis le répertoire WordPress :

Si la recherche affiche aucun résultat, c’est qu’il n’y pas de conflit. On peut donc continuer !
Lancer le compilateur
Une fois votre éditeur de code ouvert, la première chose à faire sera d’ouvrir le terminal intégré via le menu Terminal > Nouveau Terminal.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
Inscrivez ensuite à l’intérieur npm start et appuyez sur Entrée pour lancer le compilateur.
Si tout se passe bien, vous devriez voir apparaître plusieurs lignes en vert et orange.
Désormais tout sera fait automatiquement : le compilateur va convertir les fichiers React du dossier src en JS standard et les placera dans le dossier build à chaque fois qu’on fera une modification.
D’ailleurs, on ne touchera donc jamais aux fichiers du dossier build. On travaillera uniquement depuis le dossier src.
Si plus tard vous avez besoin de lancer une autre ligne de commande en parallèle du compilateur, vous pouvez diviser le terminal en deux :

Ce sera pratique pour installer une nouvelle dépendance à votre projet ou versionner votre code par exemple.
Tester le bloc
Pour terminer, on va vérifier que tout fonctionne bien, et pour cela on va insérer le bloc créé par défaut avec l’extension.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
Dans WordPress, créez une page ou un article et insérez le bloc dans le contenu, vous devriez avoir quelque chose qui ressemble à ceci :
Notez qu’en front, la bordure rouge en pointillé n’apparaît pas : c’est normal car ce style est présent uniquement dans editor.scss.
Comme on l’a vu, pour l’instant ce bloc ne fait rien. Dans la suite de la formation, on va créer des blocs administrable pour les rendre plus intéressant !
Ce bloc était juste là pour nous donner un aperçu rapide des actions nécessaires pour déclarer un bloc, et servira de base pour la suite.
Télécharger les fichiers de la formation
Dans cette formation, je vais parcourir tous les concepts des blocs Gutenberg au travers d’une vingtaine d’exemples.
Vidéo premium
Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
Dans la version premium de la formation, vous avez accès au code de mes projets afin d’éviter d’avoir à les réécrire vous-même.
Partie premium
Cette partie du cours est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?
N’hésitez pas à utiliser cet outil pour tous vos sites qui nécessiteront des blocs sur mesure !
Maintenant, avant de se lancer dans la création de notre premier bloc, on va faire un tour du propriétaire et analyser la structure de cette extension, afin de bien comprendre le rôle de chaque fichier.
contact
Le 12 avril 2018
Hello Maxime,
Merci pour cette formation.
Pas moyen d’installer Local by Flywheel. Peut-on le remplacer par Wamp pour suivre ce tuto ?
Maxime BJ
Le 12 avril 2018
Oui pas de souci ! Je te conseille même plutôt MAMP qui fonctionne mieux sur Windows que ses collègues (Wamp…) et reconnu pour poser moins de soucis.
Qu’est-ce qui bloque pendant l’installation de Local ? Tu sais ?
contact
Le 14 avril 2018
Difficile de savoir, ça bloque sur starting local machine… J’ai essayé en supprimant Oracle VM virtual box, comme conseillé sur les forums mais sans résultat. On est apparement un certain nombre à être bloquer surtout avec win 7.
info3
Le 17 décembre 2018
Bravo Maxime, un super boulot, riche d’enseignements, de bonnes pratiques, vraiment didactique.
Maxime BJ
Le 21 décembre 2018
Merci beaucoup ! 🙂
Houwk
Le 20 février 2019
Un article parfait 😀
Petite question lorsqu’on créé un bloc, tout le code est compilé dans gutenberg_blocks-cgb-block-js pas moyen de faire un appel js et css que lorsque le bloc est appelé ?
Maxime BJ
Le 20 février 2019
Merci !
Tout le code est effectivement compilé dedans oui, mais tu pourrais très bien appeler un autre script en parallèle via enqueue script. Mais ça dépend vraiment de ce que tu veux faire !
guillaume.tirard
Le 18 mars 2019
Hello, merci beaucoup, oui c’est très clair pour l’instant.
Toute l’installation est basée sur le fait de créer ses blocs dans des plugins, j’aurai besoin de les installer plutôt dans mon thème enfant. Mais je verrai bien plus tard comment adapter la configuration à ce besoin, cela ne m’empêche pas d’apprendre les fondamentaux en attendant.
Merci.
Maxime BJ
Le 18 mars 2019
En fait il vaut mieux les laisser dans une extension quand même comme je l’explique dans un cours précédent. C’est plus simple à gérer !
Ogan
Le 6 juin 2021
Hello,
Merci pour ce tuto qui permet de découvrir les coulisses de Gutenberg.
Je pense avoir trouvé une mini coquille dans le texte au point 2. Lancer Webpack … Au prochain démarrage de votre ordinateur
Le nom de dossier à la fin de la ligne de commande ( cd /Sites/gutenberg/app/public/wp-content/plugins/capitainewp ) devrait être « capitainewp-gut-bases », non ?
Maxime BJ
Le 7 juin 2021
Merci ! Je corrige tout de suite 🙂
Mary
Le 12 avril 2023
Bonjour, Tout d’abord, merci pour vos cours qui sont toujours aussi bien rédigés et compréhensibles et pour la qualité de la pédagogie ! J’avais une question bête… est-ce qu’il est pertinent de coupler la création de blocks Gutenberg et ACF ou un seul des deux suffit à personnaliser un site web ? Merci par avance pour votre réponse.
Maxime BJ
Le 13 avril 2023
Merci !
Tu peux choisir : soit faire des blocs avec ACF, ce qui est beaucoup plus simple et beaucoup plus rapide, avec seulement du PHP. Soit les faire nativement en React. Dans l’absolu il n’y a plus trop d’avantages à utiliser la méthode native en réalité. Donc je recommande l’utilisation d’ACF. Ce cours te montre comment faire : https://capitainewp.io/formations/acf/blocs-acf-gutenberg/
Mary
Le 13 avril 2023
Bonjour Maxime, merci beaucoup pour ces précisions, d’après ce que je lis, si on souhaite faire appel à une API il vaut mieux privilégier la création de blocks natifs en REACT, si ce n’est pas le cas on peut utiliser ACF ? Merci d’avance pour la réponse.
Maxime BJ
Le 13 avril 2023
Au final tu pourrais faire ça aussi avec des blocs ACF. Après ça dépend vraiment de comment tu vas appeler l’API et les besoins en performance. Les 2 solutions peuvent marcher en tous cas. si tu le fais en ACF, tu pourras appeler l’API distante à partir du template de rendu PHP. Si tu utilises React, tu pourrais aller directement sonder l’API à partir de JS.