12

たくさんの画像 (およびその他の大きなメディア ファイル) を含むブログになる予定のサイトを作成するために、Jekyll を検討しています。画像のディレクトリを作成し、必要に応じて投稿にリンクするのは簡単です。しかし、私が理解しているように、サイトが生成されると、すべての画像データが静的ファイルを保持する生成された _site ディレクトリに複製されます。サイトが生成されるたびに、_site ディレクトリが空になり、サイトの静的バージョンが再設定されます。

たとえば、サイトディレクトリ内の画像ディレクトリへのシンボリックリンクをドロップし、静的ファイルが生成されるときにjekyllにそれを無視させる方法はありますか?

または、これについてもっと理にかなった別の方法はありますか?

4

4 に答える 4

11

Apache Web サーバーで実行していると仮定すると、Alias ディレクティブをセットアップして、通常の docroot 以外のディレクトリから画像を提供できます。VirtualHosts 構成を編集するためのアクセス権、またはエイリアス ディレクティブを作成するその他の機能 (たとえば、コントロール パネル経由) が必要です。

これがどのように機能するかの例として、jekyll ファイルを「/web/jekyll」というディレクトリに保存するとします。images ディレクトリを取得するには、次の手順を実行します。

  1. 基本的な jekyll ツリーとともに「_images」ディレクトリを追加します。次のようなものになります:

    _config.yml
    _images/
    _layouts/
    _posts/
    _site/
    index.md
    
  2. Apache 構成を更新して、次のような Alias ディレクティブを追加します。

    Alias /images /web/jekyll/_images
    
  3. Apache 構成をリロードし、jekyll を実行してサイトを構築します。

イメージ ディレクトリ名はアンダースコアで始まるため、jekyll はビルド中に出力 _site にプッシュ/コピーしません。Apache は通常どおり _site ディレクトリからほとんどのファイルを喜んで提供しますが、"/web/jekyll/_site/_images/ test.jpg」の場合、「/web/jekyll/_images/test.jpg」から配信します。


ちなみに、私は、ソース コンテンツと出力コンテンツを jekyll のデフォルトよりももう少し分離するのが好きです。したがって、次のようにディレクトリ構造をセットアップします。

/web/jekyll/html/
/web/jekyll/images/
/web/jekyll/source/
/web/jekyll/source/_config.yml
/web/jekyll/source/_layouts
/web/jekyll/source/_posts
/web/jekyll/source/index.md

_config.yml で次のオプションを設定すると、

destination: ../html

そして、apache エイリアス ディレクティブを次のように設定します。

Alias /images /web/jekyll/images

Jekyll は「/web/jekyll/source」ディレクトリで実行されますが、出力は「/web/jekyll/html」ディレクトリに送信されます。最初の例と同様に、「http://jekyll/images/test.jpg」への呼び出しは「/web/jekyll/images/test.jpg」から提供されます。この設定は、サイト サービスの観点からは実際には違いはありません。生のソース ファイル、完全にベイクされた出力ファイル、およびエイリアスを介して動作する画像の間の明確な分離が気に入っています。

于 2011-08-08T16:57:42.090 に答える
0
  1. 画像のプロジェクトページを作成します。
  2. ディレクトリ構造を設定する

    /home/git/svnpenn.github.io
    /home/git/img
    
  3. Jekyllを実行する

    # We cant add the symlink until after jekyll is done. We will remove the
    # site folder and wait for it to rebuild.
    rm -r _site
    jekyll --server &
    while [ ! -f _site/index.html ]
    do
      sleep 1
    done
    ln -s ../images _site/images
    

GitHubページで時間を公開するのに役立つと思ったので、これを使用していたことに注意してください。そうではありません。サーバーによっては、GitHubの公開に1〜10分かかる場合があります。

于 2012-03-12T18:50:39.123 に答える