我使用Harp创建一个静态网站,该网站将托管在GitHub页面上。到目前为止,一切正常,但我对文件夹结构有点担心。
这是因为GitHub页面需要在存储库的根文件夹中传递的文件。
所以我最终得到了当前的结构:
/
.gitignore
index.html
_sources/
harp.json
README.md
public/
index.ejs
困扰我的是我无法在顶层获得README.md
文件(这意味着当我在GitHub上访问存储库时,我总是被告知我应该创建一个,我需要如果我不想通过GitHub页面公开README.md,请手动降级一级。
此外,构建步骤感觉很奇怪。在我需要运行的_sources
文件夹中:
$ harp compile --output ..
这在某种程度上感觉不对,编译某些内容并将结果放在父文件夹中。这是一个理论问题,但如果_sources
文件夹中有一个public
文件夹,我最终会得到一个很大的漏洞: - /
有没有办法如何构建这个,以便我可以在顶级_sources
文件夹中包含所有内容,同时仍然能够提供所有内容,因为它现在来自GitHub页面?
答案 0 :(得分:3)
不幸的是,你无法解决Github页面需要根目录中的静态文件这一事实,以及Harp清除compile
上的目标目录这一事实。它可能感觉违反直觉,但将根文件存储在像_sources这样的目录中,并且编译后的文件仍然是root,这仍然是此工作流程的规定方法。此外,虽然harp compile
清除了目标目录,但是如果不在该分支上编译,您仍然可以将文件保存在根中的自述文件中。您可以保持master
分支清洁,然后仅在gh-pages
中编译为“部署”。
在https://github.com/openoakland/openbudgetoakland/tree/master查看我们当前的流程。我仍然希望找到一种不那么“hacky”的方式来实现这一目标,但这是现在有用的。
答案 1 :(得分:1)
让我总结一下我使用User / Organization在Github Pages中部署到Harp页面的工作流程,并希望能帮助那些人。
我的项目在编译之前。
_deploy
是一个简单的shell脚本,用于处理编译,移动README并推送到Github。# change dirs to _src if not already in there
if [ ${PWD##*/} != "_src" ]; then
cd _src
fi
# source is the current directory and the target the parent directory
harp compile ./ ../
# files starting with _ are not copied to target. copy _README and rename
cp _README.md ../
cd ..
mv _README.md README.md
# commit to the repo and push to github
git add .
git commit -m "Deploy."
git push
编译后。
有关详情,请参阅this gist。