KOoLiNuS, uno dei più attenti lettori di questo blog, mi ha suggerito di dare una occhiata a Grav, un moderno generatore di siti web statici,
follemente veloce, ridicolmente facile e favolosamente potente
L’ho provato per qualche giorno, con la prospettiva di verificare se potesse essere una alternativa a Jekyll, il generatore di siti web statici che ho deciso da tempo di usare per questo blog al posto di Wordpress (non chiedetemi però quando avverrà).
Gli sviluppatori non esagerano, Grav è veramente bello e facile da usare.
Mi piace in particolare la possibilità di scaricare dei siti preconfezionati, contenenti il sistema base, il tema grafico e alcuni plugin già configurati, che implementano i tipi più comuni di sito web, dal blog al sito di fotografie, dal sito di presentazione di un prodotto a quello di e-commerce.
Installazione e uso di Grav
Premessa: tutti gli esempi seguenti verranno eseguiti nella directory Sites
, contenuta nella Home dell’utente. Una volta creata questa directory dal Finder o dal Terminale, si noterà che l’icona della cartella ha impresso il simbolo di Safari. Per parecchie versioni di OS X infatti (fino a Lion se ricordo bene), Sites
è stata una delle directory predefinite presenti nella Home degli utenti di OS X.
Nonostante Apple abbia rimossa da tempo questa directory, io continuo a trovarla molto comoda per gestire dei siti web di prova.
Grav può essere installato sia dalla linea di comando che scaricando un file zip contenente un sito già pronto e perfettamente funzionante.
Nel primo caso, basta lanciare il Terminale, spostarsi nella directory Sites ed eseguire in sequenza i comandi
$ cd ~/Sites
$ git clone https://github.com/getgrav/grav.git
$ cd grav/
$ bin/grav install
con i quali (1) si seleziona la directory di lavoro, (2) si scarica il codice di Grav dal sito del progetto, (3) ci si sposta nella directory grav/
del sito e (4) si installano il tema grafico e i plugin predefiniti.
Completata l’installazione, si può provare rapidamente che tutto funzioni eseguendo, sempre dalla directory grav/
il comando
$ php -S localhost:8000
e puntando il proprio browser all’indirizzo web
http://localhost:8000
per visualizzare in tutta la sua magnificenza grafica il sito web di default generato da Grav.
Sinoti che il comando php -S localhost:8000
esegue un server web basilare integrato in PHP, uno degli strumenti fondamentali per sviluppare applicazioni web, presente di default in OS X. Ovviamente nulla impedisce di usare al suo posto apache
, il principe dei server web, presente anch’esso di default in OS X. Purtroppo è diventato difficile convincere apache
ad usare la directory ~/Sites
in aggiunta a quella predefinita, /Library/WebServer/Documents/
.
Fra tutte le directory contenute in Grav, la più importante è la directory user/
, che contiene le pagine del sito e i relativi plugin, temi e file di supporto.
Le pagine del sito sono contenute in user/pages/
e sono scritte in Markdown, uno degli strumenti più interessanti per scrivere testi per il web, che utilizza una sintassi molto più semplice e leggibile del classico codice HTML.
Il modo più semplice per aggiungere una nuova pagina al sito è spostarsi nella directory user/pages/
cd user/pages/
copiare la directory 01.home
in, diciamo, 02.nuova_pagina
cp -p -r 01.home 02.nuova_pagina
e modificare opportunamente il contenuto del file default.md
presente all’interno della directory 02.nuova_pagina
.
Il titolo della pagina, definito nella intestazione del file default.md
verrà usato per aggiungere automaticamente una nuova voce al menu del sito web.
Il prefisso numerico associato al nome di ciascuna directory stabiliscono l’ordine con cui compaiono le pagine nel menu del sito.
Se si vuole installare uno dei siti preconfezionati, bisogna invece scaricare il file zip relativo in ~/Sites/. Come già detto, contiene oltre al sistema base i plugin necessari ad implementare le funzionalità desiderate e il tema grafico previsto dagli sviluppatori per quel particolare tipo di sito web.
Una volta scompattato il file zip e rinominata la directory generata con un nome più conveniente (in questi casi non c’è bisogno di essere troppo creativi, grav
va benissimo), basta spostarsi all’interno della directory del sito e lanciare il server web PHP
$ cd ~/Sites/grav
$ php -S localhost:8000
per attivare il nuovo sito web, visibile come già visto prima all’indirizzo
http://localhost:8000
Aggiornamento e installazione di plugin e temi
Il comando di Terminale gpm
(grav package manager) permette di aggiornare il sistema e di installare i plugin e i temi di Grav. Il comando gpm
deve essere eseguito posizionandosi nella directory grav/
del sitoe specificando la directory bin
che contiene l’eseguibile.
I principali comandi implementati in gpm
sono molto semplici:
$ bin/gpm index
che mostra la lista completa dei plugin e dei temi disponibili,
$ bin/gpm info nome_plugin
$ bin/gpm install nome_plugin
$ bin/gpm uninstall nome_plugin
che permettono rispettivamente di ottenere informazioni, installare o disinstallare un particolare plugin o un tema di Grav.
Inoltre il comando
$ bin/gpm self-upgrade
aggiorna Grav all’ultima versione disponibile, mentre
$ bin/gpm update
aggiorna i plugin o i temi già installati. Quest’ultimo può essere anche seguito dal nome del plugin (o del tema) da aggiornare.
Documentazione
La documentazione di Grav è fatta molto bene, anche se è piuttosto succinta e un po’ carente nei dettagli.
Purtroppo, data la relativa giovinezza del progetto, mancano ancora i tutorial online creati dagli utenti, che molte volte sono più utili della documentazione “ufficiale” per imparare ad usare un software come questo.
Molte volte, infatti, i programmatori non riescono a spiegare al meglio il funzionamento dei software che sviluppano, si perdono in dettagli inutili e tralasciano gli aspetti fondamentali. Gli utenti finali sono spesso più bravi e, avendo imparato ad usare il software da zero, si rendono conto meglio delle difficoltà che si incontrano nell’uso quotidiano del programma.
Bello ma impossibile
Tutto bene, allora? L’ho già detto, Grav è veramente bello e interessante, una opzione allettante se si vuole mettere su un nuovo sito web. Ammetto che se partissi da zero potrei perfino considerare di usarlo al posto di Jekyll.
Ma non lo farò.
Innanzi tutto perché sono ormai andato troppo avanti con Jekyll, ho letto decine di articoli e di tutorial, ho una idea piuttosto chiara di quello che voglio fare e non mi va di buttare a mare il lavoro fatto finora.
Inoltre Grav va benissimo finché si sta dentro i recinti stabiliti dagli sviluppatori. Ma comincia a mostrare di essere ancora piuttosto immaturo se si prova ad uscire, anche di poco, da questi recinti.
La struttura delle directory e dei file che costituiscono un sito è troppo rigida.
Voglio creare una nuova pagina di un sito web statico? Devo andare in user/pages/
e aggiungere una directory con un nome qualunque, che deve però iniziare con un numero. In questa directory devo creare un file default.md
che contiene il testo della pagina e il cui titolo definisce la voce di menu del sito web associata alla pagina.
Posso usare un’altro nome per il file al posto di default.md
? Assolutamente no.
Come faccio se ho già una serie di file contenenti il testo delle pagine? Devo rinominarli uno ad uno e distribuirli in ciascuna delle directory numerate.
E se le pagine contengono già dei link che le collegano le une alle altre, non sarò mica obbligato a cambiare i link uno a uno? Probabilmente si.
E se voglio aggiungere delle pagine statiche ad un blog già pronto, ad esempio il bellissimo Notepad? Le pagine statiche devono andare in user/pages/
, quelle del blog in user/blog/
. Se provo ad aggiungere in user/
la directory pages/
contenente una o più pagine statiche, non c’è verso, continuerò comunque a vedere solo i post del blog.
Perfino i plugin e i temi installati da Terminale nel 50% dei casi non funzionano, senza che Grav dia delle indicazioni utili per capire il perché.
Sono sicuro che c’è un modo per superare questi problemi, ma io non ci sono riuscito e la documentazione non aiuta. Meglio aspettare che Grav maturi un po’.