GitHub Pages がすでに Automatic Page Generator を使用している 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 }}
このファイルを jekyll として使用できるようにします。レイアウトを適用するファイルは 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
上記のスクリプトdocs/*
は、ブランチのディレクトリにあるマークダウン ファイルも同期しmaster
、GitHub Pages サイトでも表示できるようにします。これらのドキュメントへの相対リンクは、ブランチ.md
のアンカーから拡張子を削除するために次の jQuery 関数を含めると機能します。次のスクリプトをディレクトリにgh-pages
追加できます。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にサンプル リポジトリをセットアップしました。プロジェクト ページはこちらにあります。