我构建一个简单的Web应用程序AngularJS和Flask(REST arch。)我正在使用yeoman生成所有样板文件。问题在于heroku托管需要通过git进行部署。项目结构:
client <- content generated by yeoman
server
|-- static
|-- venv
server.py <- flask
Procfile
.gitifnore
...
我修改了grunt脚本,所以最后dist
文件夹被复制到静态。目前dist
位于.gitignore,但我正在考虑一些可能的解决方案
每个人都有利有弊(不知道是否有可能)。还有更好的方法吗?
编辑:
这是当前的事件状态。 grunt复制dist
客户端到heroku\static
,现在我手动复制服务器。但我不知道如何将它推向heroku。 git subtree push --prefix heroku heroku master
给了我拒绝的消息。我设置遥控器并尝试所有组合,但到目前为止没有成功。
.git
.gitignore
README.md
client
heroku
.git
static
Procfile
requriements.txt
server
答案 0 :(得分:1)
关于第一个选项:查看this SO线程 - 基本上使用git-subtree,您可以为构建创建单独的repo,并避免使用生产提交污染dev repo。
因为第二种选择毫无意义。
答案 1 :(得分:0)
我最终拥有单独的repo并使用invoke进行管理。这是构建脚本。
from invoke import run, task
@task
def clean():
run("rm -rf heroku/*")
run("cd client && grunt clean")
@task
def build():
run("cd client && grunt")
@task
def deploy():
run("mkdir heroku/static && cp -r client/dist/* heroku/static/")
run("rsync -av --exclude='venv' --exclude='local_server.py' server/ heroku")
msg = run("git log -1 --pretty=%B").stdout
run("cd heroku && git add --all && git commit -m '%s' && git push heroku master" % (msg,))
@task("clean", "build", "deploy")
def all():
pass