Middleman和Github页面

时间:2012-08-04 13:53:42

标签: github middleman github-pages

我正在尝试使用Middleman创建静态网站。 git repo master包含源文件。静态文件在build中的.gitignore文件夹中生成。我有一个分支gh-pages用于Github页面。如何设置gh-pages包含build master文件夹内容的内容。

感谢。

4 个答案:

答案 0 :(得分:7)

看起来这个gem提供了一个优雅的解决方案:

middleman-gh-pages

答案 1 :(得分:6)

我开始使用与Octopress uses相同的技术,它对Middleman非常有用。

基本上我使用两个git存储库,一个位于根文件夹中,另一个位于build文件夹中。根存储库推送到GitHub远程上的develop分支,并排除build目录。 build目录中的存储库会推送到同一GitHub远程的master(或gh-pages)分支。

为了自动推送新的静态页面,我使用以下Rakefile:

desc "deploy build directory to github pages"
task :deploy do
  puts "## Deploying branch to Github Pages "
  cp_r ".nojekyll", "build/.nojekyll"
  cd "build" do
    system "git add ."
    system "git add -u"
    puts "\n## Commiting: Site updated at #{Time.now.utc}"
    message = "Site updated at #{Time.now.utc}"
    system "git commit -m \"#{message}\""
    puts "\n## Pushing generated website"
    system "git push origin master"
    puts "\n## Github Pages deploy complete"
  end
end

答案 2 :(得分:2)

另一个好宝石是middleman-deploy。安装并配置完所有内容后,您只需运行

即可
$ middleman deploy 

并且您的构建目录将被推送到GitHub页面。您可以在配置中指定要推送的分支。我还有一篇关于从Jekyll切换到GitHub页面的博客文章here,它有点谈论部署。

答案 3 :(得分:0)

我找不到干净的方法。这是我一直在使用的脚本:

bundle exec middleman build
mv build /tmp/

git checkout gh-pages
git rm -rf .
cp -r /tmp/build/* .
git add .
git commit -m "Update site"

rm -rf /tmp/build

git push
git checkout master