Build oblige, les extensions s’insèrent symboliquement

Iceberg

Crédits Photo Andy Brunner sur Unsplash

L’environnement « develop » de WordPress a dernièrement Ă©voluĂ© pour amĂ©liorer la modularitĂ© et la flexibilitĂ© de ses JavaScripts, prĂ©parer l’arrivĂ©e prochaine de l’Ă©diteur du projet Gutenberg et favoriser le recours aux pratiques JavaScript modernes. Je vous invite Ă  prendre connaissance de l’article ci-dessous pour en savoir plus sur le sujet.

Si comme moi, vous avez pris vos aises dans cet environnement pour dĂ©velopper vos extensions, vous avez certainement vu ce message informant qu’il est dĂ©sormais obligatoire de « construire » WordPress.

Il est donc nĂ©cessaire, pour Ă©laborer ce build, d’installer Node, NPM, Grunt et les modules Node que WordPress utilise pour automatiser les travaux qu’implique cette construction. Pas de souci de mon cĂ´tĂ© puisque pour contribuer Ă  BuddyPress, Gutenberg et fabriquer mes extensions, je suis dĂ©jĂ  Ă©quipĂ© en consĂ©quence.

En passant, lĂ  oĂą un espace disque de 48Mo suffisait pour contribuer Ă  WordPress, la partie immergĂ©e liĂ©e aux modules Node et Ă  la mise en place de ce build requiert dĂ©sormais pratiquement 230Mo de plus. Il faudra penser Ă  prendre en compte cette nouvelle contrainte dans l’organisation des contributor days…

L’impact le plus important porte sur la volatilitĂ© de ce build. Car en effet, ce que nous mettions dans src/wp-content/plugins peut très simplement ĂŞtre dĂ©placĂ© dans build/wp-content/plugins une fois ce dernier constituĂ©. Cependant, grunt build dĂ©marre par une suppression totale du dossier build avant de le reconstituer. VoilĂ  pourquoi l’utilisation des liens symboliques que je pratique depuis un bon moment pour mon confort s’impose dĂ©sormais pour garder en efficacitĂ©.

Mise Ă  jour! Le build maintient dĂ©sormais les liens symboliques ou rĂ©pertoires qui relèvent d’extensions ou de thèmes personnels. Vous pouvez toujours utiliser le script bash ci-après, mais une seule fois : ce n’est plus la peine de le faire systĂ©matiquement.

~/plugins

Je range toutes les extensions que je crĂ©e, utilise ou auxquelles je contribue dans un dossier complètement en dehors de toute arborescence de site : dans un rĂ©pertoire « plugins » de mon « home »  ~/plugins. Ensuite, jusqu’Ă  prĂ©sent je crĂ©ais un lien symbolique vers une ou plusieurs de ces extensions en jouant depuis ~/Sites/wp-develop/src/wp-content/plugins (par exemple) ce type de commande :

ln -s ~/plugins/entrepot entrepot

Il s’agit donc de se positionner dĂ©sormais sur ~/Sites/wp-develop/build/wp-content/plugins après chaque grunt build pour continuer Ă  pouvoir tester visuellement dans le navigateur nos dĂ©veloppements personnels.

No problĂ©mo lorsqu’il s’agit de le faire pour une extension, mais Ă  partir de deux ça commence dĂ©jĂ  Ă  ĂŞtre un peu plus chiatique ! Du coup je me suis construit le script bash ci-dessous pour automatiser un peu cette tâche devenue beaucoup plus rĂ©pĂ©titive.

J’insère ce fichier build.sh dans ~/Sites/wp-develop/tools en veillant Ă  le rendre transparent grâce Ă  un .gitignore une bonne fois pour toute, et au lieu de jouer le grunt build  je joue ./tools/build.sh qui le contient (cf. ligne 19) en plus de la gĂ©nĂ©ration automatique des liens symboliques pour la liste des extensions prĂ©sentes dans mon ~/plugins de mon choix. Si vous souhaitez vous aussi profiter de cette astuce, voici comment la mettre en place :

# Se potionner dans le répertoire tools
cd chemin_vers_WordPress_develop/tools

# Ajouter un .gitignore dans le répertoire
# tools pour que le script bash soit ignoré.
touch .gitignore
echo 'build.sh' >> .gitignore

# Télécharger puis placer le ficher build.sh dans
# le répertoire tools avant de le rendre exécutable.
chmod +x build.sh

# Remonter Ă  la racine du site.
cd ..

# Récupérer les derniers commits WordPress.
# PS: j'utilise le miroir Git du repo SVN.
# Voir https://make.wordpress.org/core/2014/01/15/git-mirrors-for-wordpress/  
git pull

# Lancer le build en spécifiant les liens
# symboliques à créer une fois le build accompli
# dans l'invite qui s'affichera.
./tools/build.sh