Jak migrowałam blog z Nikola do Hugo
Spis treści
Przygotowuję migrację do Hugo
Kroki:
Przekonwertowanie plików .rst na markdown
W tym kroku
- dowiedziałam się o istnieniu narzędzia pandoc
- nauczyłam się, jak w fish shellu zmienić rozszerzenie pliku, którego nazwę mam w zmiennej $p (wyrażeniem
(basename $p .rst).md
)
|
|
Przygotowanie sktyptów
Niestety, pandoc uciął front metadata. Dlatego napisałam skrypty, które
- wypiszą frontmeta
|
|
- przekształcą z formatu .rst na .toml
|
|
Przykład
|
|
Wygenerowanie plików .md z frontmatter
No to wrzucam do pętli:
|
|
Hm, teraz jednak trzeba połączyć przekształcony frontmatter i zawartość wpisu.
Inne podejście
Piszę program w pythonie, który:
- przejrzy pliki w posts
- wrzuci parę .meta i .md z posts do koleki
- znajdzie .rst, wyjmie meta, wrzuci parę .meta i .rst przekształcony na .md do koleki
- dla każdej pary w kolejce przekształci .rst meta na .toml meta
Oczywiście, trzeba będzie najpierw zrobić backup (jest całość w gicie)
Po dwóch tygodniach
Udało się przemigrować bloga prywatnego! Skrypt migrujący jest wrzucony na githuba
To, co jeszcze muszę sprawdzić, to
- jak odwoływać się do innych wpisów
- jak wrzucić np. projekty napisane w js lub wygenerowane strony html niebędące częścią bloga (bez przetwarzania)
I jeszcze trochę czasu
Okazało się, że i tak trochę rzeczy musiałam zrobić ręcznie (lub przejechać sed
-em):
- “shortcodes” do generowania miniatur w Nikoli przekształciłam na “shortcode”
figure
- usunęłam
type="text"
z frontmeta (atrybut ten w Hugo oznacza, że wpis ma wskazany typ, a nie typ wynikający z położenia w root bundle) - zamieniłam komentarz html-owy oznaczający koniec teasera (
TEASER_END
namore
) - usunęłam z odnośników do obrazków prefiks
/images
- odowłania do inych wpisów to po prostu slug z prefiksem:
posts/<slug>
albopages/<slug>
Wydaje się teraz, że praca dobiega końca. Jeszcze dodam projekty i sprawdzę, dlaczego nie działają odwołania do fragmentów svg.