私はそれが完全なサイトの構築にかかる時間を解決することはできませんが、私は劇的に文書を起草し、レイアウト変更を行うスピードアップするための方法を作ってみました。これはすべて、編集のためにローカルマシン上で作業し、次に本番サーバーに展開することを前提としています。別のプロセスがある場合は、マイルが異なる場合があります。
基本的なアイデアは、それぞれが同じ出力場所を指し示す複数のジキルソースディレクトリを使用することです。私の場合、私は3つを使用します。レイアウト、デザイン、機能の変更(「_dev」と呼ばれる)とフルサイトの内容を含む最終的なもの(「_main」と呼ばれる)のためのものを作成し編集する(「_drafts」と呼ばれる)ためのものです。
トップレベルのディレクトリ構造は次のようになります。
./_drafts
./_dev
./_main
./html
各ジキルソースの_config.ymlファイルは、「HTML」ディレクトリにジキル生成された出力を指すようにフォローしてセットアップです:
destination: ../html
'_drafts'と '_dev'ディレクトリには、 '_main'サイトのデザインと機能性を模倣するために必要なファイルの最小数が含まれています。私は仕事をしているうちにジキルが走っている2つのディレクトリですべての仕事をしています。私のローカルWebサーバーは、ローカルドメイン(例:http://jekyll-test/
)を 'html'ディレクトリに向けるように設定されているので、変更を行っている間、何が起こっているのかを見ることができます。
編集が終わったら、新しく更新されたファイルを '_dev'または '_drafts'から '_main'の対応する場所にコピーします。ファイルが配置されたら、最後に '_main'でジキルを実行します。この方法では、サイトを実稼働環境に展開する前に、長いサイト生成時間を1回待つだけで済みます。私はしばらくこのアプローチを使用してきたし、それが大きな違いを見つける。
ワークフローを最適化するために、他のいくつかの方法があります:「_drafts」と同期して「_main」のデザインと機能性を保つために
使用シンボリックリンクが。
あなたは、MacやLinuxマシン上./main/_layouts
に./main/_config.yml
と./_drafts/_layouts
に./_drafts/_config.yml
を指すように設定シンボリックリンクされている場合は(同様の機能は、おそらくWindows上に存在するが、私はそれに話すことができません)。何らかの理由で、ジキルは記号的にリンクされたいくつかのディレクトリでうまく動作しません。たとえば、私のインストール時に、シンボリックリンクとして機能しないルートレベルの 'css'ディレクトリがあります。私はすべての場所に実際のコピーを持っていなければなりません。
デプロイメントスクリプトを作成します。
私が展開する準備ができたら、私はjekyllを直接実行しません。私は '_main'ディレクトリにjekyllという小さなスクリプトを書き、プロダクションサーバに出力をrsyncして、完了したら通知します。これによりジキルを待つ必要がなくなるだけでなく、サイトを展開するのに必要なステップ数が減ります。
追加のスクリプトとツールをビルドします。
'_dev'と '_drafts'ディレクトリからファイルをコピーすることは大したことではありませんが、いくつかの自動化を追加するのが最も重要です。たとえば、 '_config.yml'ファイルと '_layouts'と 'css'ディレクトリを '_dev'から '_drafts'と '_main'(必要に応じて)にコピーするコマンドラインスクリプトがあります。
ドケットの別のツールは、 '_drafts'から '_main'に投稿を移動するローカルWebアプリです。ファイルの動きを簡単にし、作成と公開の摩擦を軽減するものはどれもいいです。ローカルで実行
使用LiveReload
、jekyll --auto
はファイルで作業しながら、変更を自動的に生成するのに最適です。この自然なコンパニオンはLiveReloadというアプリです。ローカルの 'html'ディレクトリを監視し、コンテンツが変更されたときにブラウザの自動リロードを開始します。これは、テキストエディタの横にブラウザウィンドウを保持し、ファイルを保存するときに自動的に変更が行われることを確認できます。それは時々少し薄れですが、それを使用した後、あなたはそれなしでどのように住んでいたか分かりません。
あなたは自分の最も最近のローカルの変更をプレビューするために短い建物の時間が必要な場合は明確でした(ローカルホストに、したがって、「プレビュービルドを」:必要なすべての記事を含みませんか)?または、1000sのポストを持つ展開ビルドが本当に必要な場合は、高速化する必要がありますか? – cboettig
また、 '--auto'フラグは、変更中にjekyll' --server'が既に実行されている場合にのみ機能します。つまり、あなたのウェブサーバーで常に 'jekyll --server --auto'を実行していて、変更をそのサーバーにプッシュした場合です。 Jekyllは 'jekyll --server'へのその後の呼び出しの間にどのページが変更されたのかを追跡していません。 – cboettig
も参照してください:https://github.com/jekyll/jekyll/issues/1855 –