TL; DR: Czy mogę jakoś raz wygenerować zawartość dla {% include %}
i wytłaczać ją w wielu miejscach bez konieczności jej regeneracji w każdym miejscu?Jekyll: Wygeneruj jeden element włączający i dołącz go do wszystkich stron.
Buduję dość dużą stronę dokumentacji z Jekyll, która ma teraz ponad 50 artykułów na ten temat. Ma pasek boczny, na którym znajdują się wszystkie artykuły. Pasek boczny jest budowany w osobnym pliku sidebar.html, a następnie jest dołączany do każdej strony w serwisie przy pomocy {% include sidebar.html %}
w pliku default.html.
Problem polega na tym, że każdy pojedynczy artykuł generuje osobno plik sidebar.html, więc mam ponad 50 generacji przejść na tym kawałku kodu. Każdy dodany artykuł dodaje kolejną przepustkę do tego i sprawia, że wszystkie przejścia są wolniejsze, ponieważ generowanie paska bocznego musi analizować każdy pojedynczy artykuł w projekcie.
Czas budowy wzrósł z praktycznie zerowego do ponad 100 sekund, a jeśli usunę {% include sidebar.html %}
, to spadnie do 5 sekund. Kiedy dostanę wszystkie artykuły, które według mnie szacuję na około 100-200 z nich. W przyszłości powinienem mieć wersjonowanie dla wszystkich artykułów, co oznacza, że w dłuższej perspektywie może być z łatwością ponad 1000 artykułów. W tym momencie nie byłbym zaskoczony, gdyby zmiana jednej litery w jednym pliku zajęłaby około godziny, aby zregenerować pliki w jekyll serve
i jekyll build
.
Chciałbym zbudować sidebar.html raz na początku procesu kompilacji i po prostu wytłaczać go na każdej stronie, kiedy generuję te strony. czy to możliwe?
Generowanie 50-stronicowej zawartości nie zajmuje tak dużo czasu. Czy możesz pokazać kod dla ciebie? –
Wstawiłem na pastebin: http://pastebin.com/KBKbQr4P. Wyjaśniłem tam krótko, dlaczego robi to, co robi, i zauważyłem pewne problemy z perfektem już tam, ale nie mam lepszego sposobu, aby to zrobić. Jest podzielony na trzy części. Sugerujemy także wszelkie sugestie, jak to zrobić lepiej. –
To funkcjonalny spis treści! Wkopię się wieczorem. –