2012-04-28 12 views
56

Zastanawiam się, jak inni ludzie organizują swoje zasoby dla poszczególnych postów podczas korzystania z Jekyll. Na przykład, jeśli post ma obraz, czy po prostu zrzucić go w folderze wspólnych zdjęć? Naprawdę nie podoba mi się pomysł zrobienia tego - oznacza to, że obraz jest całkowicie oddzielony od postu, gdy myślę, że powinny być sparowane.Lokalne zasoby pocztowe z Jekyllem

Odpowiedz

21

Wolę myśleć o obrazach jako samodzielnych zasobach, które są zawarte w co najmniej jednej stronie. Przez większość czasu moje obrazy pojawiają się na jednej stronie. Są chwile, kiedy chcę mieć je na wielu stronach, a w innych nie łączę obrazu w ogóle. Jeśli Twój przepływ pracy polega na umieszczeniu każdego obrazu w katalogu z postem, znalezienie ich zaczyna wymagać znacznej ilości poszukiwań i musisz wymyślić coś innego dla obrazów, które nie należą do konkretnego postu.

Podejście, którego używam, znajduje się po przeciwnej stronie widma. Mam jeden katalog obrazów (serwowany z "/ images") i tam znajduje się 100% moich zdjęć. Korzyści z tego są:

  1. Kiedy jestem dodanie obrazka do postu Łatwo poznać ścieżkę. Zawsze jest:

    /images/{image-name} 
    

    Na przykład: http://alanwsmith.com/i/aws-20111017--0906-02. Dzięki temu można napisać wtyczkę, więc wszystko, co musisz wprowadzić, to nazwa obrazu, a reszta znanej ścieżki jest wypełniana automatycznie.

  2. Dzięki aplikacji takiej jak Photo Mechanic niezwykle łatwo jest przeglądać pojedynczy katalog lokalnie i zobaczyć każdy obraz. Jeśli chcę dołączyć obraz na innej stronie, znacznie skraca to czas jego odnalezienia.

  3. Nie ma oddzielnej lokalizacji/procesu, jeśli chcę wysłać zdjęcie do kogoś bez umieszczania go na stronie (tj. Wysłać mu bezpośredni link do pliku obrazu). Po prostu wyrzucam obraz do standardowego katalogu i wysyłam bezpośredni link.

Jeśli chcesz uzyskać trochę bardziej zaawansowany, przechowywanie wszystkich obrazów w jednym katalogu umożliwia również pewne udoskonalenia. Na przykład, nawet jeśli adresy URL moich zdjęć zaczynają się od "/ images", obrazy są rzeczywiście przechowywane w katalogu poza tymi, które używają jekyll. W moim przypadku, górna część mojego drzewa źródłowego wygląda następująco:

./html 
./source-files 
./image-files 

Wszystkie moje zdjęcia są zapisywane w katalogu „./image-files”. W mojej konfiguracji apache ustawiłem alias tak, aby URL "/ images" wskazywał na katalog "./image-files". Na przykład:

Alias /images /webroot/image-files 

Kiedy biegnę Jekyll, przetwarzać wszystko w "./source-files" i krople go w "./html". Ponieważ wszystkie obrazy znajdują się poza tymi dwoma katalogami, jekyll nigdy ich nie widzi/nie dotyka. W miarę powiększania się biblioteki obrazów pomoże to przyspieszyć działanie i zapobiegnie olbrzymiej ilości niepotrzebnego kopiowania plików.

Innym uszczypnąć Lubię w Apache jest włączenie:

Options +MultiViews 

pozwala to nazwać swoje zdjęcia bez konieczności korzystania z rozszerzenia pliku (np nie „.jpg”, „.png”, etc .. .). Możesz to zobaczyć w przykładowym łączu, który podałem powyżej. Nie ma to znaczenia dla wydajności. Po prostu podoba mi się sposób, w jaki wygląda i to oszczędza mi konieczności wpisywania rozszerzenia za każdym razem, gdy dzwonię do obrazu.

MultiViews umożliwia także zastąpienie obrazu w jednym formacie innym bez potrzeby przekodowywania czegokolwiek innego. Na przykład, jeśli usuniesz "some-image.gif" i zastąpisz go "some-image.png", nie będziesz musiał dotykać żadnego HTML. Nadal będzie obsługiwany w postaci "/ images/some-image". Konieczność dokonywania takich zmian jest prawdopodobnie niezwykle rzadka. Po prostu myślę, że to jest coś interesującego.

Na koniec można podjąć decyzję o zezwoleniu na przeglądanie katalogu plików obrazu lub uniemożliwić jego przeglądanie. Osobiście chcę tylko, aby moje obrazy pojawiały się tam, gdzie je umieszczam. Tak, mam ustawić plik .htaccess w moim katalogu obrazów do:

Options -Indexes 

Jeśli masz zamiar pracować na miejscu z wielu tysięcy lub dziesiątek tysięcy stron i obrazów, to nie może skalować. W przypadku normalnej wielkości witryny osobistej uważam, że takie podejście ułatwia utrzymanie obrazów.

+0

dlaczego jest to przyjętą odpowiedź? nie daje to technicznych wskazówek, jak współlokować. Zgadzam się z przypadkiem użycia tej odpowiedzi, ale są też obrazy, których nie mam zamiaru udostępniać ogólnie poza postami na blogu - w takich przypadkach nie chcę zaśmiecać ich folderu z obrazkami. – ianstarz

+1

@ianstarz - Po prostu odpowiadałem na pierwszą część pytania, w jaki sposób ludzie traktują obrazy. Podczas gdy osoba zadająca pytanie początkowo stwierdziła, że ​​nie podobał im się pomysł umieszczania obrazów w jednym folderze, najwyraźniej zmieniły one zdanie. Stwierdziłem, że rozdzielenie obaw, jakie można uzyskać dzięki utrzymywaniu obrazów w ich własnym drzewie katalogów (np. Możesz mieć podkatalogi również), i wiedząc, że jest tylko jedno miejsce, w którym przechowywane są obrazy, aby były pomocne. Ale to wszystkie osobiste preferencje i opcje, takie jak https://stackoverflow.com/a/19635916/102401 SamRayner odpowiedzi są całkowicie uzasadnione. –

0

W przypadku skryptów JavaScript i CSS warto rozważyć potok zasobów. Możesz uzyskać poprawę wydajności dzięki wiązaniu i kompresji. Używam także CoffeeScript i Sass, więc potrzebowałem preprocesora do konwersji moich zasobów. Używam Jekyll Asset Pipeline do automatycznego zarządzania całym procesem po uruchomieniu polecenia jekyll.

W przypadku obrazów/wideo zalecam opracowanie konwencji nazywania folderów w projekcie. Generalnie mam folder "zasoby", a następnie podfoldery z datą każdego posta, który zawiera obrazy związane z tymi wpisami. Jeśli masz wiele postów dziennie, możesz rozważyć umieszczenie nazwy wpisu.

21

napisałem plugin pozwoli mi łatwo zorganizować aktywa podkatalogów:
https://github.com/samrayner/jekyll-asset-path-plugin

{% asset_path my-image.png %} 

w post-post-2013-01-01 tytuł byłby wyjściowe:

/assets/posts/post-title/my-image.png 

na stronie Moja pierwsza strona wyświetli:

/assets/my-first-page/my-image.png 
6

Tak jak ty, naprawdę nie znoszę mieć wszystkich zdjęć w jednym wspólnym folderze.

Większość, jeśli nie wszystkie, z moich obrazów są przydatne w jednym miejscu i utrzymując je obok pliku Markdown jest naprawdę lepsze zarządzanie Wiadomości:

  • mogę spaść nowy post jako jeden sub -folder of /_posts/ w jednym kroku, bez konieczności umieszczania Markdown w jednym miejscu i obrazów na innym
  • Kiedy chcę edytować obraz (y) istniejącego postu, nie muszę szukać odpowiedni obraz w ogromnym folderze /assets/, znajduje się tuż obok pliku Markdown
  • W moim Markdown, mogę użyć t że nazwa pliku obrazu bezpośrednio, bez ścieżki
  • Jeśli chcę użyć dowolnego edytora Markdown z podglądem na żywo, to działa, nie ma potrzeby konkretnej konfiguracji folderu aktywa

starałem się mieć to na moim blogu (example post here).

Dla obrazów responsywnych użyłem Jekyll Picture Tag plugin, ale musiałem go rozwidlić, ponieważ the Pull Request radzenie sobie z takimi ścieżkami nie zostało zaakceptowane.

Teraz, gdy Jekyll 3 jest dostępny, chciałbym, żebyśmy mogli użyć obrazów zarówno w folderze pocztowym ORAZ w numerze /assets/, szukając obrazu oznaczonego ![alt](image-file-without-path.jpg) w obu, w tej kolejności.