Customiser sa configuration Middleman

Middleman arrive avec tout ce qu’il faut pour construire un site web statique. Evidemment on peut toujours en vouloir plus.

Vous avez trois principaux leviers pour customiser cette configuration :

Voici donc quelques recettes. Ce n’est certainement pas exhaustif.

Les modules Middleman

Livereload

https://github.com/middleman/middleman-livereload

Pour recharger une page dès qu’une modification est sauvegardée. Ainsi pas besoin de relancer middleman à chaque fois. Très pratique dans les phases de développement.

Blog

https://middlemanapp.com/basics/blogging/

Très bien expliqué dans la doc de middleman. C’est simple et efficace. Seule difficulté, si c’en est une, apprendre Markdown.

Syntax

https://github.com/middleman/middleman-syntax

Si vous avez un blog ou des pages avec du code, vous voudrez certainement le mettre en valeur. On a tous en tête les pages Github où votre code est coloré en fonction du langage. Ce plug-in vous permet exactement de faire celà. Il est d’ailleurs actif sur cette page.

HAML

HAML est une alternative à ERB pour le développement des vues ou des templates. Je l’utilise car j’apprécie sa syntaxe très concise ce qui accélère le développement. Il faut par contre faire attention à sa mise en page qui est critique dans le parsing et la transformation en html.

Plus de détail sur https://haml.info/

Pour l’activer, ajouter dans votre fichier config.rb

    # HAML as default template
    set :haml, { :format => :html5 }
    Haml::TempleEngine.disable_option_validator!

Les extensions Middleman

Retrouvez toutes les extensions de la communauté Middleman : https://directory.middlemanapp.com/#/extensions/all

Et ma sélection

images

https://github.com/zweitag/middleman-images

Pour avoir des pages chargées efficacement et rapidement quelque soit le device, les photos (qui pèsent le plus dans le total en général) doivent être optimisées. Cette extension vous permet de :

Voire plus vu qu’elle est basée sur ImageMagick

meta-tags

https://github.com/tiste/middleman-meta-tags

Pour améliorer la visbilité de votre site, il faut qu’il soit correctement analysé par les moteurs de recherche pour arriver dans les premiers résultats. Cette extension et la suivante vous y aideront. Avec Middleman MetaTags, vous pourrez définir des Tags par page et pour le site, directement dans la page ou dans un fichier YAML.

robots

https://github.com/yuya-matsushima/middleman-robots

Cette extension facilite la création du fichier robots.txt utilisé par les moteurs de recherche pour crawler votre site.

Mettre en place un “External Pipeline”

Avec tout cela vous pouvez déjà construire des sites statiques sympa mais parfois un peu trop statique. Pour apporter des interactions, l’ajout de javascript est nécessaire. Middleman ne propose plus de pipeline intégré mais des moyens pour intégrer son pipeline préféré dans le process de génération du site. J’avais personnellement au début construit un pipeline sur la base de Webpack, parce que j’étais plus ou moins habitué à celà avec Rails. Mais les évolutions de Rails 7 ouvrent la porte aussi à une remise en cause de ce composant. Après quelques recherches, je me suis orienté vers Vite.js pour sa facilité de mise en oeuvre et sa rapidité à générer les packages. Je vous propose donc de regarder comment l’intégrer à votre configuration Middleman.

Installer Vite pour accéder à un environnement Node.js

Middleman étant construit en Ruby et basé sur Rack, l’installation de Vitejs est aussi simple que d’ajouter un gem à votre Gemfile.

  ./bin/bundle add vite_padrino
  ./bin/bundle add vite_ruby
  ./bin/bundle install
  ./bin/bundle exec install

Et voilà !!! Bon… presque en fait… il faudra tout de même faire quelques petits trucs à côté

Modifier votre config.rb pour qu’il contienne les deux blocs suivants

  # Vite Configuration
  require "vite_ruby"
  require "vite_padrino/tag_helpers"
  helpers VitePadrino::TagHelpers

  configure :development do
    ...
    use ViteRuby::DevServerProxy, ssl_verify_none: true
    ...
  end

Pour faciliter la partie développement, j’aime utiliser un (simple) script et Overmind

  # Procfile
  vite: bin/vite dev
  web: bundle exec middleman serve

Installer vos composants javascript préférés

A partir de là l’installation de vos composants JS préférés est classique, un coup de npm/yarn et mettre à jour application.js

Hotwire

Hotwire est une alternative aux frameworks modernes JS, tels que Angular, Vue, etc, plus légère, hyper rapide et qui profite de vos pages HTML, nous venant de l’équipe qui a construit Basecamp et HEY et par la même occasion à l’origine de Rails.

J’aime l’approche progressive proposée. On construit une page HTML sans interaction, puis on ajoute progressivement des interactions par quelques ajouts dans la page et un peu JS à coté. C’est hyper léger comparé aux autres framework, et donc plus rapide à charger, mais surtout vous pouvez construire des sites semblables à des SPA (Single Page Application) sans la complexité du framework à apprendre.

Tailwind

Ai-je vraiment besoin de présenter Tailwind ?

DaisyUI

daisyUI est une librairie de composants purs CSS basé sur Tailwindcss. C’est simple et joli, surtout si vous aimiez le style Bootstrap.