Harp.js和GitHub页面是否有任何文件夹结构的最佳实践?

时间:2014-10-08 03:57:23

标签: javascript node.js github github-pages harp

我使用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页面?

2 个答案:

答案 0 :(得分:3)

不幸的是,你无法解决Github页面需要根目录中的静态文件这一事实,以及Harp清除compile上的目标目录这一事实。它可能感觉违反直觉,但将根文件存储在像_sources这样的目录中,并且编译后的文件仍然是root,这仍然是此工作流程的规定方法。此外,虽然harp compile清除了目标目录,但是如果不在该分支上编译,您仍然可以将文件保存在根中的自述文件中。您可以保持master分支清洁,然后仅在gh-pages中编译为“部署”。

https://github.com/openoakland/openbudgetoakland/tree/master查看我们当前的流程。我仍然希望找到一种不那么“hacky”的方式来实现这一目标,但这是现在有用的。

答案 1 :(得分:1)

让我总结一下我使用User / OrganizationGithub Pages中部署到Harp页面的工作流程,并希望能帮助那些人。

我的项目在编译之前。

Directory before compiling.

  • _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

编译后。

Directory after compiling

有关详情,请参阅this gist