Nie mogę rozwiązać czasu potrzebnego do pełnej kompilacji strony, ale udało mi się radykalnie przyspieszyć tworzenie dokumentów i wprowadzanie zmian w układzie. Wszystko to zakłada pracę na komputerze lokalnym w celu edycji, a następnie wdrożenia na serwerze produkcyjnym. Twój przebieg może się różnić, jeśli masz inny proces.
Podstawową ideą jest użycie wielu katalogów źródeł jekyll, z których każdy wskazuje tę samą lokalizację wyjściową. W moim przypadku używam trzech. Jeden do tworzenia i edytowania postów (zwany "_projektami"), drugi do zmiany układu, projektu i funkcjonalności (nazywany "_dev") i ostatni zawierający zawartość pełnej strony (zwany "_main").
Górny poziom struktura katalogów wygląda następująco:
./_drafts
./_dev
./_main
./html
Plik _config.yml dla każdego źródła Jekyll jest konfiguracja z obserwacji wskazać Jekyll generowane wyjście do katalogu „html”:
destination: ../html
do „_drafts” oraz katalogi „_dev” zawierają minimalną liczbę plików niezbędnych do ich naśladować wygląd i funkcjonalność „” _MAIN miejscu. Robię wszystko moja praca w tych dwóch katalogów z Jekyll biegu w zależności od tego jest opracowywane. Mój lokalny serwer sieciowy jest ustawiony tak, aby wskazać domenę lokalną (np http://jekyll-test/
) do katalogu „html”, więc mogę zobaczyć, co się dzieje, a ja jestem dokonywania zmian.
Po zakończeniu edycji skopiuj nowo zaktualizowane pliki z "_dev" lub "_drafts" do odpowiadających im lokalizacji w "_main". Gdy pliki są już gotowe, wykonuję jeden końcowy przejazd przez jekyll w "_main". Dzięki takiemu podejściu trzeba tylko poczekać z długim czasem generowania witryny, zanim wdroży się witrynę do produkcji. Używam tego podejścia przez jakiś czas i stwierdzam, że robi to ogromną różnicę.
Istnieje kilka innych sposobów, aby zoptymalizować przepływ pracy:
Użyj dowiązania symboliczne, aby pomóc utrzymać wygląd i funkcjonalność „_drafts” i „_MAIN” zsynchronizowane.
Jeśli jesteś na komputerze Mac lub Linux, konfiguracja łącza symboliczne wskazać ./_drafts/_config.yml
do ./main/_config.yml
i ./_drafts/_layouts
do ./main/_layouts
(Podobną funkcjonalność prawdopodobnie istnieć w systemie Windows, ale nie mogę mówić do niego). Z jakiegoś powodu jekyll nie będzie działał dobrze z niektórymi katalogami symbolicznie połączonymi. Na przykład na mojej instalacji mam katalog "css" na poziomie katalogu głównego, który nie działa jako łącze sym. Muszę mieć jego aktualną kopię we wszystkich lokalizacjach.
Utwórz skrypt wdrażania.
Kiedy jestem gotowy do wdrożenia, nie uruchamiam bezpośrednio Jykylla. Napisałem mały skrypt wywołujący jekyll w katalogu "_main", przekazuję dane wyjściowe do mojego serwera produkcyjnego, a następnie powiadamia mnie, kiedy jest kompletny. Nie tylko nie trzeba czekać na jekyll, ale zmniejsza liczbę kroków wymaganych do wdrożenia witryny.
Twórz dodatkowe skrypty i narzędzia.
Kopiowanie plików z katalogu "_dev" i "_drafts" nie jest wielkim problemem, ale jest to najlepsze miejsce do dodania automatyzacji. Na przykład mam skrypt wiersza poleceń, który kopiuje pliki "_config.yml" oraz katalogi "_layouts" i "css" z "_dev" na oba "_projekty" i "_main" (w razie potrzeby).
Innym narzędziem na liście jest lokalna aplikacja internetowa, która przenosi posty z "_drafts" do "_main". Wszystko, co ułatwia przenoszenie plików i zmniejsza tarcie tworzenia i publikowania jest dobre.
Zastosowanie LiveReload
działa lokalnie, jekyll --auto
jest świetny do automatycznego generowania zmian podczas pracy na plikach. Naturalnym towarzyszem tego jest aplikacja o nazwie LiveReload. Obserwuje twój lokalny katalog "html" i uruchamia automatyczne przeładowanie przeglądarki po zmianie zawartości. Siłą tego jest to, że możesz zachować okno przeglądarki obok edytora tekstu i zobaczyć, że zmiany zachodzą automatycznie po zapisaniu pliku. Jest od czasu do czasu trochę niestabilna, ale po jej użyciu nie będziesz wiedział, jak żyłbyś bez niej.
Mógłbyś wyjaśnić, jeśli trzeba krótszy czas budowy tylko podgląd najnowszych zmian lokalnie (a więc „Preview build” do localhost: nie musi zawierać wszystkie posty)? A może naprawdę potrzebujesz rozbudowanej wersji z tysiącami postów? – cboettig
Ponadto, nie oznacza to, że flaga '--auto' działa tylko wtedy, gdy serwer jekyll' --server' już działa podczas zmian. to znaczy, jeśli Twój serwer sieciowy cały czas uruchamia 'jekyll --server --auto', i wprowadzasz do niego swoje zmiany. Jekyll nie śledzi, które strony zmieniły się pomiędzy kolejnymi wywołaniami do 'jekyll --server'. – cboettig
Zobacz także: https://github.com/jekyll/jekyll/issues/1855 –