3

我正在使用Harp创建一个静态网站,该网站应托管在 GitHub 页面上。到目前为止,一切正常,但我有点担心文件夹结构。

这是因为 GitHub pages 需要在存储库的根文件夹中交付的文件。

所以我最终得到了当前的结构:

/
  .gitignore
  index.html
  _sources/
    harp.json
    README.md
    public/
      index.ejs

如果README.md_我也不希望 README.md 通过 GitHub 页面公开。

此外,构建步骤感觉很奇怪。从_sources我需要运行的文件夹中:

$ harp compile --output ..

这在某种程度上感觉不对,编译一些东西并将结果放在父文件夹中。这是一个理论上的问题,但如果_sources文件夹中有一个文件public夹,我最终会得到一个大泥球:-/

有什么方法可以构建它,以便我可以_sources在顶层文件夹中拥有所有内容,同时仍然能够像现在一样从 GitHub 页面提供所有内容?

4

3 回答 3

5

我已经找到了一个很棒的解决方案,它使用了很棒的gh-pages npm 模块。这是我的设置:

相关目录/文件:

README.md
bin/
    publish
dist/
node_modules/
package.json
src/
    _layout.jade
    index.md

的相关行package.json

"scripts": {
  "compile": "harp compile src dist",
  "publish": "npm run compile && bin/publish"
},
"devDependencies": {
  "coffee-script": "^1.9.2",
  "gh-pages": "^0.2.0",
  "harp": "^0.13.0"
},

内容bin/publish(这是coffeescript,但您可以轻松将其转换为 JS):

#!/usr/bin/env coffee

ghpages = require 'gh-pages'
path = require 'path'

handle_error = (error) ->
  if error
    console.error error
    process.exit error.code or 1

dist = path.join __dirname, '..', 'dist'

ghpages.publish dist, handle_error

要发布,我只需运行:

npm run publish

它使用 dir 的内容作为 repo 的根创建 gh-pages 分支dist,并将其推送到 github!

更详细地,来自gh-pages文档:

调用此函数将创建当前存储库的临时克隆,gh-pages如果不存在则创建一个分支,复制基本路径中的所有文件,或仅那些与可选src配置中的模式匹配的文件,提交所有更改并推送到origin遥控器。

这对我来说就像一个魅力。希望它可以帮助别人!

对于一个完整的工作示例,这里是一个使用上述所有配置(以及更多)的实时示例 repo。

于 2015-04-22T08:43:15.477 回答
3

不幸的是,您无法解决 Github 页面需要根目录中的静态文件以及 Harp 清除compile. 感觉可能违反直觉,但是将根文件存储在 _sources 之类的目录中,并将已编译的文件存储在根目录中仍然是此工作流程的规定方法。此外,在harp compile清除目标目录的同时,如果您不在该分支上编译,您仍然可以将 README 之类的文件保留在根目录中。你可以保持你的master分支干净,然后只编译gh-pages到“部署”。

在https://github.com/openoakland/openbudgetoakland/tree/master查看我们当前的流程。我仍然想自己找到一种不那么“hacky”的方法来完成这项工作,但这就是现在可行的方法。

于 2014-10-31T18:06:43.383 回答
1

让我总结一下我使用Harp部署到Github Pages中的用户/组织页面的工作流程,希望能帮助到那里的人。

我的项目在编译之前。

编译前的目录。

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

编译后。

编译后的目录

有关更多信息,请参阅此要点

于 2014-11-07T12:57:18.440 回答