将缩小的源部署到github-pages

时间:2014-08-24 11:03:18

标签: git github gruntjs

我无法弄清楚如何最好地将缩小的构建部署到gh-pages,但要保持开发版本的掌握。

我有一个这种格式的存储库:

/build
/public
  /stylesheets
     a bunch of scss files
  /javascript
     a bunch of js files
  index.html
gruntfile.js

在开发过程中,我有一个笨拙的任务,它可以监视所有内容并创建未经识别的构建文件。我在dev期间的构建文件夹看起来像这样

/build
  index.html
  main.js
  styles.css

然后我有一个艰巨的任务,用于创建一个生产版本,缩小我的javascript和css,然后内联到我的index.html文件中。给我一个simly的构建目录

/build
  index.html

我需要能够将生产的minfied构建文件夹部署到gh-pages分支,而不会破坏repo的历史记录。理想情况下,主分支根本不包括构建文件夹。

我知道我可以使用git subtree push --prefix dist origin gh-pages部署子树,问题是在正确的分支中拥有正确版本的build文件夹。

1 个答案:

答案 0 :(得分:0)

此网址上的帖子非常有用:https://github.com/X1011/git-directory-deploy

重要的一点:由于我不希望签入构建文件夹,并且我想将它保留在.gitignore中,因此子树推送没有意义。这个答案还允许您有机会在推送之前构建生产文件,这些文件在master中从未见过。

假设您的dist文件夹是生产文件所在的位置,以下是设置方法。

git --work-tree dist checkout --orphan gh-pages 首先创建一个没有历史记录且与其他分支(孤儿)分开的gh-pages分支

git --work-tree dist rm -r "*" 从分支中删除正常的源文件

git --work-tree dist add --all 仅添加dist

中的文件

git --work-tree dist commit -m "initial publish"

git push origin gh-pages

git symbolic-ref HEAD refs/heads/master && git reset --mixed 重置回主人

以及其他部署

git checkout gh-pages

git --work-tree dist add --all

git --work-tree dist commit -m "Commit Message"

git push origin gh-pages

git symbolic-ref HEAD refs/heads/master && git reset --mixed