我正在尝试使用Middleman创建静态网站。 git repo master
包含源文件。静态文件在build
中的.gitignore
文件夹中生成。我有一个分支gh-pages
用于Github页面。如何设置gh-pages
包含build
master
文件夹内容的内容。
感谢。
答案 0 :(得分:7)
看起来这个gem提供了一个优雅的解决方案:
答案 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