GitHubPagesがすでに自動ページジェネレーターを使用しているJekyllを使用しているという事実を利用してセットアップしたソリューションを投稿します。
git checkout gh-pages
mkdir _layouts
mv index.html _layouts
git checkout master -- README.md
mv README.md index.md
- 次のテキストをに追加します
index.md
---
layout: index
---
また、index.html
ファイルを開いて次の変更を加える必要があります。
レンダリングされたHTMLをREADME.md
ファイルのマークダウンから削除します。これは通常、<section>
または<article>
タグの間にあります。このHTMLをテキストに置き換えると、{{ content }}
このファイルをジェキルとして使用できるようになります。レイアウトを適用するファイルは、コンテンツタグがある場所に配置されます。
プロジェクトページテーマのCSSを見つけます。私にとって、これは次のような行でした。
<link rel='stylesheet' href='stylesheets/stylesheet.css' />
これをに変更する必要があります
<link rel='stylesheet' href='{{ site.path }}/stylesheets/stylesheet.css' />
- このレイアウトで使用されるサイトに保存されているその他のアセットにも、プレフィックスを付ける必要があります
{{ site.path }}
。
これを行うことにより、Jekyllはマークダウンファイルをindex.html
レイアウトのコンテンツとしてレンダリングします。_layouts
ディレクトリ。README.mdファイルだけでなく、マスターブランチにある他のドキュメントについてもこのプロセスを自動化するために、次の手順を実行しました。
post-commit
以下を含むというファイルを作成しました。
#!/bin/bash
###
### The following block runs after commit to "master" branch
###
if [ `git rev-parse --abbrev-ref HEAD` == "master" ]; then
# Layout prefix is prepended to each markdown file synced
###################################################################
LAYOUT_PREFIX='---\r\nlayout: index\r\n---\r\n\r\n'
# Switch to gh-pages branch to sync it with master
###################################################################
git checkout gh-pages
# Sync the README.md in master to index.md adding jekyll header
###################################################################
git checkout master -- README.md
echo -e $LAYOUT_PREFIX > index.md
cat README.md >> index.md
rm README.md
git add index.md
git commit -a -m "Sync README.md in master branch to index.md in gh-pages"
# Sync the markdown files in the docs/* directory
###################################################################
git checkout master -- docs
FILES=docs/*
for file in $FILES
do
echo -e $LAYOUT_PREFIX | cat - "$file" > temp && mv temp "$file"
done
git add docs
git commit -a -m "Sync docs from master branch to docs gh-pages directory"
# Uncomment the following push if you want to auto push to
# the gh-pages branch whenever you commit to master locally.
# This is a little extreme. Use with care!
###################################################################
# git push origin gh-pages
# Finally, switch back to the master branch and exit block
git checkout master
fi
編集:README.md
ファイルとマークダウンの両方について上記のスクリプトを更新して、docs/*
両方が同じレイアウトファイルを使用するようにしました。これは、以前よりもはるかに優れたセットアップです。このスクリプトは.git/hooks/
ディレクトリに配置されます。bashはあなたの道になければなりません。
_config.yml
次のファイルを作成します
markdown: redcarpet
path: http://username.github.io/reponame
上記のスクリプトは、GitHub Pagesサイトでも表示できるようdocs/*
に、master
ブランチのディレクトリにあるマークダウンファイルも同期します。これらのドキュメントへの相対リンク.md
は、gh-pages
ブランチのアンカーから拡張機能を削除するために次のjQuery関数を含めると機能します。あなたは、次のスクリプトを追加することができますindex.html
での_layouts
ディレクトリ:
$(document).on('ready', function () {
$('a').each(function (i, e) {
var href = e.href;
if (href.search('.md') > 0)
$(this).attr('href', href.split('.md')[0]);
});
});
編集:私は私のリポジトリで上記のコードを変更しました、これはこれを行うための迅速で汚い方法でした、しかし私が何を意味するかを知っているならそれはすべての場合に正しく機能しません..例えば、マークダウンファイルcompany.mdata.md
は処理されません正しく。これを修正するために、これを次のスクリプトに更新しました。このスクリプトは、hrefをより注意深くチェックアウトし、見つかった場合は拡張子を削除します。また、スクリプトをより汎用的にして、ext
変数を変更することで他の拡張機能を削除できるようにしました。コードは次のとおりです。
$(function () {
$('a').each(function () {
var ext = '.md';
var href = $(this).attr('href');
var position = href.length - ext.length;
if (href.substring(position) === ext)
$(this).attr('href', href.substring(0, position));
});
});
これらすべてがどのように連携するかを確認したい場合は、ここにプロジェクトページがあるCoryG89 / docsyncにサンプルリポジトリを設定します。
README.md
バージョンをGitHubページにプッシュするリモートスクリプトを呼び出すフックを追加することを考えましたか?