Przejdź do treści

Jak założyć bloga korzystając z Jekyll?

Plan jest prosty. Mamy pomysł na aplikację, która będzie w formie bloga. Będzie można zakładać kolejne posty oraz dawać komentarze po nimi. Warto jeszcze wspierać tagi, aby filtrować listę postów.

Baner promujący artykuł

Moje zadanie będzie dotyczyło platformy www.ecmascript6.pl. Chciałbym, aby na niej znalazły się informacje nt. najnowszego standardu ECMAScript 6. Ze względu na końcówkę w domenie, chciałbym, aby artykuły były w niej po polsku.

Mam też plan, aby zrobić oddzielną sekcję na angielskojęzyczne artykuły.

Wybór narzędzia

Zaczynamy od wyboru systemu na którym będziemy się opierali. Ze względu na łatwość zarządzania wybór padł na Jekylla.

Jekyll to biblioteka (gem) w środowisku Ruby.

Za chwilę dowiecie się jak zainstalować interpreter języka Ruby. Stay Tuned!

Stworzenie katalogu

Zaczynamy tworząc katalog pod nasz projekt:

mkdir NAZWA_PROJEKTU
cd NAZWA_PROJEKTU

Instalacja narzędzia - rvm

Zainstalujemy rvm, tak aby nie zaśmiecać systemowej konfiguracji. Zainstalować go można na wiele różnych sposobów. Dużo sposób na instalację jest na stronie domowej. Moim zdaniem najprostszy to:

\curl -sSL https://get.rvm.io | bash -s stable

Instalacja interpretera języka - ruby

Gdy mamy już manager wersji języka, zainstalujemy wreszcie jakąś jego wersję! Wybrałem najnowszą z “2” na początku.

rvm install 2.7.8

Możemy właśnie zainstalowaną wersję ustawić jako domyślną za pomocą:

rvm alias create default 2.7.8

A następnie przełączmy się na tą wersję:

rvm use 2.7.8

Stworzenie środowiska dla zależności - gemset

Następnie stworzymy tzw. gemset, czyli katalog na potrzeby instalacji Jekylla oraz jego zależności.

rvm gemset create NAZWA_PROJEKTU

Po wydaniu polecenia rvm list gemsets widzimy, że jeszcze musimy się przełączyć na ten nowo stworzony gemset. Wydajemy polecenie:

rvm use 2.7.8@NAZWA_PROJEKTU

Jesteśmy już w nowym środowisku! 🎉

Instalacja Jekylla

Aby zainstalować Jekylla postępujemy zgodnie z rozpiską na stronie: http://jekyllrb.com/.

Wykonujemy poniższe polecenie, które zainstaluje nam gem (paczkę, program), dzięki której będziemy mogli stworzyć strukturą plików i katalogów dla naszego projektu.

gem install jekyll

Gdy mamy już zainstalowane narzędzie, wykorzystajmy je!

jekyll new .

Tym samym w katalogu projektu stworzy się struktura:

.
├── _config.yml
├── _includes
│   ├── footer-tag.html
│   ├── head-tag.html
│   └── header.html
├── _layouts
│   ├── default.html
│   ├── page.html
│   └── post.html
├── _posts
│   └── 2015-06-28-welcome-to-jekyll.markdown
├── _sass
│   ├── _base.scss
│   ├── _layout.scss
│   └── _syntax-highlighting.scss
├── about.md
├── css
│   └── main.scss
├── feed.xml
└── index.html

5 directories, 15 files

Dobrym pomysłem, jest teraz stworzenie repozytorium w tym katalogu. Wykonujemy po kolei:

git init
git add .
git commit -am "Initialize project"

Uruchomienie

Gdy już mamy strukturę projektu możemy już uruchomić nasz projekt w przeglądarce. Wystarczy uruchomić:

jekyll serve

W terminalu dostaniemy informację na jaki adres trzeba wejść, aby wyświetlić stronę. W moim przypadku jest to http://127.0.0.1:4000/

Strona wygląda następująco:

Jekyll: Default page

Zwróć uwagę na port który trzeba dopisać do adresu IP maszyny.
Można go (port) łatwo zmienić: jekyll serve --port 4001.

Konfiguracja

Plik: _config.yml

Gdy już mamy uruchomioną aplikację czas na dostosowanie jej pod nasze potrzeby. Warto zacząć od głównego pliku konfiguracyjnego _config.yml znajdujący się w głównym katalog projektu. Zawiera on takie pola jak: tytuł strony, opis, kontakt do autora no i URL.

Katalog: _includes/

Następnie warto przyjrzeć się katalogowi _includes, w którym jest lista partiali (plików, które zostaną użyte w innym miejscu).

Plik head-tag.html zawiera definicję całego znacznika <head>. Polecam dodać w nim wygenerowany snippet kodu z Google Analytics. Dodatkowo może jakieś pliku CSS.

Katalog: _posts/

Kolejny katalog warty uwagi (chyba najważniejszy) to katalog _posts, w który znajduje się lista plików z naszymi postami.

Jekyll przyjmuje konwencję, że jeden plik = jeden post. To w nim umieszczamy pliku wg schematu YYYY-MM-DD-name-of-post.ext.

Mamy kilka typów rozszerzeń do wyboru, m.in. markdown, md, html. W każdym plik post istnieje specjalna sekcja na początku tego pliku, w której to definiujemy taki informacje jak:

  • layout, w jakim dany post ma być wyświetlony,
  • tytuł posta,
  • oraz ewentualne tagi.

W późniejszym etapie powiem o tagach. Ze swojej strony polecam zwykły html, ze względu na nieograniczone możliwości edycyjny. Pierwotnie używałem Markdown-a, ale przy bardziej skomplikowanych elementach nie radził on sobie najlepiej.

Katalog:pages/

Ostatnią rzeczą na która warto zwrócić uwagę są zwykłe strony. W katalogu głównym istnieje plik about.md. W zawartości takiego pliku (podobnie jak w postach) poza layoutem i tytułem jest jeszcze parametr: permalink. Oznacza on URL pod jakim strona ma byc dostępna. I tak proponuję stworzyć katalog pages, który będzie przechowywał strony. Jekyll sam znajdzie pliki w takim katalogu.

Ważne jest, aby nazwa nie zaczynała się od znaku podkreślenia, gdyś katalogi z prefiksem “_” są traktowane przez Jekylla specjalnie.

Plik: Gemfile

Ostatnim krokiem będzie stworzenie pliku Gemfile w katalogu głównym, aby ustawić odpowiednie środowisko (gemset) wraz z zawartością:

source 'https://rubygems.org'

ruby '2.7.8'
#ruby-gemset=NAZWA_PROJEKTU

gem 'jekyll'

Ponowna instalacja

Kiedy będziemy instalowali ponownie aplikację, to wystarczy wtedy tylko:

# stworzyć `gemset`
rvm gemset create NAZWA_PROJEKTU

# zainstalować gem `bundler`
gem install bundler

# zainstalować zależności
bundle install

… i mamy Jekylla! 🎉

Podsumowanie

Przejście opisanego tutoriala nie zajmuje wiele czasu. Po jego zakończeniu osiągamy spory efekt - w pełni praktyczną aplikację z podstronami oraz postami.

W dzisiejszych czasach postawienie bloga to nie jest jakiś rocket science.

Jeśli masz doświadczenie z językami programowania to na pewno chciałbyś mieć nieograniczony wpływ na Twoją aplikację webową, tym samym stworzenie takie aplikacji dzięki Jekyllowi jest efektywne, szybkie i łatwe!