サイト全体の構築にかかる時間を解決することはできませんが、ドキュメントの下書きとレイアウトの変更を劇的にスピードアップする方法を思いつきました。これはすべて、編集のためにローカル マシンで作業し、運用サーバーに展開することを前提としています。プロセスが異なる場合、マイレージは異なる場合があります。
中核となるアイデアは、それぞれが同じ出力場所を指す複数の jekyll ソース ディレクトリを使用することです。私の場合は3本使います。投稿の下書きと編集用 (「_drafts」と呼ばれる)、レイアウト、デザイン、機能の変更用 (「_dev」と呼ばれる)、サイト全体のコンテンツを含む最後のもの (「_main」と呼ばれる) です。
最上位のディレクトリ構造は次のようになります。
./_drafts
./_dev
./_main
./html
各 jekyll ソースの _config.yml ファイルは、jekyll が生成した出力を 'html' ディレクトリにポイントするように次のようにセットアップされます。
destination: ../html
「_drafts」および「_dev」ディレクトリには、「_main」サイトのデザインと機能を模倣するために必要な最小限のファイルが含まれています。私はこれら 2 つのディレクトリですべての作業を行い、作業中のディレクトリで jekyll を実行します。私のローカル Web サーバーは、ローカル ドメイン (例: http://jekyll-test/
) が「html」ディレクトリを参照するようにセットアップされているため、変更中に何が起こっているかを確認できます。
編集が終了したら、新しく更新されたファイルを「_dev」または「_drafts」から「_main」の対応する場所にコピーします。ファイルが配置されたら、'_main' で最後の jekyll を実行します。このアプローチでは、サイトを本番環境にデプロイする前に、長いサイト生成時間を 1 回待つだけで済みます。私はこのアプローチをしばらく使用してきましたが、大きな違いがあることがわかりました。
ワークフローを最適化する方法は他にもいくつかあります。
シンボリック リンクを使用して、'_drafts' と '_main' のデザインと機能を同期させます。
Mac または Linux マシンを使用している場合は、シンボリック リンクを設定./_drafts/_config.yml
して参照先./main/_config.yml
を指定./_drafts/_layouts
し./main/_layouts
ます (Windows にも同様の機能が存在する可能性がありますが、私はそれについて話すことができません)。何らかの理由で、jekyll はシンボリックにリンクされたいくつかのディレクトリでうまく動作しません。たとえば、私のインストールでは、シンボリック リンクとして機能しないルート レベルの「css」ディレクトリがあります。すべての場所に実際のコピーが必要です。
デプロイ スクリプトを作成します。
デプロイの準備ができたら、jekyll を直接実行しません。「_main」ディレクトリで jekyll を呼び出し、出力を本番サーバーに rsync し、完了したら通知する小さなスクリプトを作成しました。これにより、jekyll で待機する必要がなくなるだけでなく、サイトのデプロイに必要な手順の数が減ります。
追加のスクリプトとツールを構築します。
'_dev' および '_drafts' ディレクトリからファイルをコピーすることは大したことではありませんが、自動化を追加するには最適な場所です。たとえば、'_config.yml' ファイルと '_layouts' および 'css' ディレクトリを '_dev' から '_drafts' と '_main' の両方に (必要に応じて) コピーするコマンド ライン スクリプトがあります。
ドケットの別のツールは、投稿を「_drafts」から「_main」に移動するローカル Web アプリです。ファイルの移動を容易にし、作成と公開の摩擦を軽減するものは何でも良い.
LiveReload を使用する
ローカルで実行するとjekyll --auto
、ファイルの作業中に変更を自動的に生成するのに最適です。これに自然に付随するのはLiveReloadというアプリです。ローカルの「html」ディレクトリを監視し、コンテンツが変更されたときにブラウザの自動リロードをトリガーします。これにより、ブラウザー ウィンドウをテキスト エディターの横に置いておくことができ、ファイルを保存すると自動的に変更が行われるのを確認できます。時々少し不安定ですが、使用した後は、それなしでどのように暮らしていたのかわかりません.