Create-block : une librairie pour démarrer rapidement ses projets Gutenberg

logo carre@4x

Sommaire du cours

  1. Qu’est-ce que create-block ?
  2. Prérequis
  3. Mise en place de create-block
    1. 1. Installer create-block
    2. 2. Lancer Webpack
    3. 3. Pour plus tard : mise en production
  4. Analyse de l’arborescence de notre extension
    1. Build : les fichiers de production
    2. Nodes modules : les dépendances du projet
    3. Src : le dossier de travail
    4. Le fichier capitainewp-gut-bases.php
    5. Vous ĂȘtes prĂȘt Ă  crĂ©er votre premier bloc

Qu’est-ce que create-block ?

Aujourd’hui, pour faire du javascript moderne, on a besoin d’outils en tous genres pour vĂ©rifier et compiler le code, le rendre compatible avec les navigateurs


Et tout cela nĂ©cessite gĂ©nĂ©ralement pas mal d’outils et beaucoup de configuration via Webpack et NPM.

On utilise notamment :

  • 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’erreurs
  • 


MĂȘme les habituĂ©s de Webpack et du dĂ©veloppement en JS passent du temps pour faire de telles configurations.

Create-block est un set d’outils (un toolkit en anglais) qui ne nĂ©cessite aucune configuration prĂ©alable et qui va mettre en place toute la structure nĂ©cessaire au dĂ©veloppement de blocs Gutenberg avec React.

En d’autre termes, on installe le projet, on commence Ă  coder, et on oublie les soucis. Et ça, ça me plait !

Je dois avouer que j’ai Ă©tĂ© conquis par ce projet. Comme je le dis tout le temps je ne suis pas un grand fan de la ligne de commande. Mais pour le coup je dois avouer que tout fonctionne Ă  merveille du premier coup !

Allez maintenant si vous le voulez bien, lançons-nous dans l’installation de create-block :

Prérequis

Comme on l’a vu dans les cours prĂ©cĂ©dents, nous allons avoir prĂ©alablement besoin d’installer NodeJS, (version 8 au minimum), le serveur Javascript qui nous permettra de lancer des commandes NPM.

Il nous faut aussi un outil de ligne de commande comme Powershell sur Windows et le terminal sur Mac. Les deux sont dĂ©jĂ  installĂ©s avec le systĂšme.

Une fois que l’on Ă  ça, il suffit de nous rendre sur la page du projet create-block sur la documentation WordPress pour voir un peu de quoi il en retourne.

Mise en place de create-block

D’aprĂšs la documentation, nous n’avons rien besoin de tĂ©lĂ©charger. Il faudra simplement taper quelques lignes de commandes pour initialiser un nouveau plugin avec toute la configuration nĂ©cessaire Ă  Gutenberg.

Avant toute chose, si ce n’est pas dĂ©jĂ  fait, on va installer une instance de WordPress en local. Pour cela vous pouvez utiliser l’excellent Local WP, dont un cours est dĂ©diĂ© dans la formation dĂ©velopper un thĂšme sur mesure.

Installer un site en local
Préparer un nouveau site avec Local

Ok ! De lĂ  retenez-bien le chemin de votre site, le Site Path sur Local, car on va devoir y aller en ligne de commande.

1. Installer create-block

On va ouvrir notre terminal et se dĂ©placer dans notre projet grĂące Ă  la commande cd (pour change directory).

On va devoir se rendre directement dans le dossier des extensions de notre site fraichement installé:

cd /Sites/gutenberg/app/public/wp-content/plugins

Adaptez cette ligne en fonction d’oĂč est installĂ© votre site. Si vous n’utilisez pas Local alors vous n’aurez pas besoin de la partie /app/public/.

Conseil

Dans le cas oĂč un dossier contient des espaces, comme Local Sites, pensez Ă  les Ă©chapper avec un backslash \ (Alt + Maj + / sur Mac).

L’autre solution serai d’ouvrir le dossier plugins via votre explorateur de fichiers, faire un clic droit dessus et sĂ©lectionner : Nouveau terminal au dossier.

L'explorateur de fichiers, et le menu pour ouvrir le terminal dans le dossier présenté
Une alternative pour ouvrir votre terminal sur le bon dossier

De lĂ  on va lancer la commande d’installation de create-block. Cette commande va crĂ©er le dossier de l’extension, donc vous n’avez pas besoin de le faire manuellement.

SHELL

1npx @wordpress/create-block capitainewp-gut-bases

Remplacez « capitainewp-gut-bases Â» par le nom que vous souhaitez donner Ă  votre extension. Notez Ă©galement que npx est une commande dĂ©rivĂ©e de npm.

Le terminal de MacOS avec la commande NPX visant Ă  installer create-block
Lancez la commande NPX

Patientez quelques secondes, le temps que les packages soient téléchargés et installés. Tout se fait automatiquement.

Une fois l’installation terminĂ©e, vous devriez avoir cet Ă©cran :

Le terminal indique que create-block a été installé avec succÚs dans votre dossier plugins
L’installation est terminĂ©e !

Vous devriez voir votre nouveau dossier dans plugins/ :

L'architecture de votre extension dans votre explorateur de fichiers
Voici à quoi ressemble votre plugin dans l’explorateur de fichiers

C’est parfait ! On peut maintenant lancer Webpack.

2. Lancer Webpack

De lĂ , comme vous le suggĂšre le terminal, il vous suffit de taper :

SHELL

cd capitainewp-gut-bases
npm start

LĂ  encore adaptez en fonction du nom de votre extension.

Au prochain dĂ©marrage de votre ordinateur, il ne faudra pas oublier de relancer Webpack. Pour cela vous ferez :

SHELL

cd /Sites/gutenberg/app/public/wp-content/plugins/capitainewp-gut-bases
npm start

Voici ce que devrait afficher votre terminal :

Le terminal affiche diffĂ©rentes informations, comme le fait que Webpack est bien lancĂ© et prĂȘt Ă  compiler les fichiers
Wepack est lancĂ©, prĂȘt Ă  compiler les fichiers de l’extension

Le terminal indique qu’il surveille le dossier en vue de changements et que la compilation s’est bien dĂ©roulĂ©e. C’est le signe que tout fonctionne correctement !

Le jour ou vous aurez une erreur de compilation, ou une erreur React, elle s’affichera dans cette fenĂȘtre, en rouge.

Conseil

Vous pourriez également lancer directement cette commande depuis le terminal intégré de VSC si vous utilisez cet éditeur de code. Pour cela cliquez sur Terminal > New terminal.

Le terminal sera directement ouvert dans le bon dossier, et vous aurez tout dans une seule fenĂȘtre :

Le terminal de Visual Studio Code
La console dans VSC

De cette maniĂšre, vous verrez immĂ©diatement l’état de la compilation ainsi que toute erreur qui s’afficherait en rouge dans la zone infĂ©rieure.

Ok c’est parfait ! Comme promis, il n’y a eu aucune configuration difficile ni le besoin de traiter avec Webpack directement.

3. Pour plus tard : mise en production

Lorsque votre extension sera prĂȘte pour la production, il faudra lancer la commande npm run build afin de crĂ©er une version optimisĂ©e de l’extension.

Analyse de l’arborescence de notre extension

Allez, maintenant que c’est installĂ© on va rapidement jeter un oeil Ă  notre extension. Voici son arborescence :

FenĂȘtre du systĂšme montrant l'arborescence des dossiers et fichiers gĂ©nĂ©rĂ©s par create-block
L’arborescence des fichiers de notre extension de blocs

Build : les fichiers de production

Dans build, vous retrouvez plusieurs fichiers, qui sont le rĂ©sultat de la compilation par Webpack :

  • index.js est le JS compilĂ© par Webpack qui contient tout le code de vos blocks.
  • style-index.css est le CSS pour le front-end, qui contient les styles de vos blocks
  • index.css : le CSS pour le back-end, pour des styles supplĂ©mentaires
  • block.json : qui contient la dĂ©finition de votre bloc ainsi que certains paramĂštres

Conseil

Du cĂŽtĂ© de l’administration WordPress, on va parfois avoir besoin de crĂ©er des styles CSS spĂ©ciaux pour les champs Ă©ditables de nos blocks ou pour surcharger un style de l’admin. C’est pour cette raison que l’on a une feuille de style spĂ©cifique pour l’éditeur.

Vous pouvez jeter un oeil au fichier index.js compilĂ© mais vous verrez un code vraiment pas sexy : c’est le code compilĂ© rĂ©trocompatible gĂ©nĂ©rĂ© par Webpack.

Nodes modules : les dépendances du projet

On retrouve Ă©galement le dossier nodes_modules. Regardez le nombre de dossiers qu’il contient : ce sont toutes les dĂ©pendances nĂ©cessaires au projet (il faut savoir que certaines dĂ©pendances ont aussi leurs propres dĂ©pendances).

C’est le fichier package.json qui est le responsable. D’ailleurs si vous l’ouvrez vous ne verrez qu’une dĂ©pendance Ă  @wordpress/scripts. C’est cette librairie qui appelera toutes les sous-dĂ©pendances nĂ©cessaires au bon fonctionnement du projet.

Vous pourrez donc ajouter vos propres dépendances NPM ici si vous en avez le besoin dans votre projet.

Src : le dossier de travail

Le dossier src est celui dans lequel on va travailler. C’est un dossier qui disparait lorsque l’on « build Â» le projet pour le mettre en production car il ne sert qu’au dĂ©veloppeur.

Le fichier src/index.js est le script de base de notre premier bloc. Il est accompagnĂ© de edit.js ainsi que save.js. On va analyser tout cela en dĂ©tail un peu plus tard. On retrouve Ă©galement block.json qui permet de dĂ©finir l’existence du bloc.

D’ailleurs, lorsque l’on ajoutera d’autres blocs, il faudra lĂ©gĂšrement modifier cette structure de base.

On retrouve Ă©galement un fichier editor.scss et un autre style.scss : Webpack les compilera automatiquement dans le bon fichier CSS.

Aparté: Les préprocesseurs CSS

Un petit mot sur les prĂ©processeurs CSS comme Sass : leur objectif est de vous simplifier l’écriture du CSS en proposant des Ă©critures sympathiques :

– Les variables, pour rĂ©utiliser facilement des valeurs

– l’imbrication, afin d’éviter la rĂ©pĂ©tition des sĂ©lecteurs

– la sĂ©paration en plusieurs fichiers, pour mieux organiser votre code


Create-block embarque Sass, le plus utilisé des préprocesseurs CSS. Webpack compilera automatiquement les fichiers.

Si vous n’ĂȘtes pas Ă  l’aise avec les prĂ©processeurs CSS, aucun souci, vous pouvez Ă©crire du CSS standard dans ces fichiers et ça fonctionnera tout aussi bien !

Si vous voulez rĂ©viser ou apprendre les bases en 5 minutes, direction la doc ! Vous allez trĂšs vite gagner du temps sur l’écriture de votre CSS.

Les bases de Sass

En parallĂšle je vous conseille d’installer Emmet sur votre Ă©diteur de code afin d’ĂȘtre au top de l’efficacitĂ© ! Il est dĂ©jĂ  inclus de base dans VSC.

Le fichier capitainewp-gut-bases.php

Enfin, le fichier capitainewp-gut-bases.php (oĂč tout autre nom correspondant au nom de votre projet) contient la dĂ©claration du bloc via la fonction register_block_type() dont on va bientĂŽt reparler.

Il n’y aura mĂȘme pas besoin de charger les scripts et les styles, comme on le fait avec les thĂšmes (voir le cours chargement des ressources) grĂące aux fonctions wp_register_style() et wp_register_script(), car WordPress s’en charge automatiquement pour chaque bloc !

Le nĂ©cessaire a Ă©galement Ă©tĂ© fait pour vous permettre d’internationaliser vos blocs et les traduire dans diffĂ©rentes langues.

Vous ĂȘtes prĂȘt Ă  crĂ©er votre premier bloc

Vous voilĂ  dĂ©sormais pleinement opĂ©rationnel pour crĂ©er vos blocs !

DerniĂšre chose : n’oubliez pas d’activer votre extension avant de continuer. Vous pouvez en profiter pour modifier la description au dĂ©but du fichier capitainewp-gut-bases.php.

L'écran des extensions dans WordPress. Pour le moment, notre extension de blocs Gutenberg n'est pas activée