2015-05-05 17 views
11

Abbiamo un sito che viene creato localmente con Jekyll e Jekyll-Assets (che utilizza le ruote dentate).genera un app.cache con Jekyll

Ci piacerebbe essere in grado di generare un manifest di cache che contiene tutti i file che entrano nel sito risultante. Vorremmo generare questo come parte del processo di creazione in modo che l'intero sito sia disponibile offline. (È un sito molto piccolo, ma siamo contrari al lavoro manuale!)

Le immagini e il css hanno un hash aggiunto al nome del file durante la compilazione, quindi non possiamo prevedere il risultato.

Abbiamo provato a utilizzare il metodo {% asset_path logo.png %}, ma non viene elaborato. Cioè lascia il tag Liquid come nel file finale. ERB fa il lavoro (<%= 2+3 %> restituisce 5) ma non possiamo vedere un modo di accedere ai file risultanti.

Stiamo prendendo in considerazione un altro compito corridore per avvolgere il tutto, ma questo sembra eccessivo.

+0

Puoi pubblicare il contenuto della pagina con il liquido che non ha funzionato? – bwest

risposta

7

jekyll-perf crea un file manifest.appcache. Il progetto sembra come se fosse inattivo, ma lo stavano facendo come segue. Spero che questo sia utile come punto di partenza. Potrebbe essere necessario modificare le cose per i percorsi delle risorse ecc., Naturalmente.

(non sono sicuro se la roba for in questo si prenderà cura del tuo problema hash aggiunte o meno. Mi scuso se questo è esattamente quello che hai già provato e non ha funzionato per voi.)

--- 
--- 
CACHE MANIFEST 

# rev {{ site.buildtime }} 

CACHE: 
{% asset_path all.css %} 
{% for page in site.pages %}{% if page.url != '/manifest.appcache' %}{{ page.url }}{% endif %} 
{% endfor %} 
{% for item in site.images %}{{ item.url }} 
{% endfor %} 
{% for item in site.scripts %}{{ item.url }} 
{% endfor %} 

NETWORK: 
* 
http://* 
https://* 
2

non dimenticare:

  • La questione di fronte vuota nel vostro manifesto

    --- 
    # empty front matter 
    --- 
    [...] 
    
  • Per eseguire il loop delle raccolte se le si emette.