Heroku部署一个子目录?

时间:2014-10-07 17:24:40

标签: node.js git heroku

我正在尝试部署节点应用,但是我遇到了代码结构问题。该应用程序是顶层的git,它看起来像:

App (git tracked in remote repo)
- .git
- server
- client
- plugin
- extras

由于Heroku需要我直接使用package.json构建文件来推送服务器目录,所以我不确定如何设置我的目录。我想要它,以便我可以从应用程序/服务器'部署heroku。文件夹,但仍像现在一样git拉/推整个应用程序:

App (git tracked in remote repo)
- .git
- server (can run 'git push heroku master' for just this folder)
  - .git (?)
- client
- plugin
- extras

我怎样才能做到最简单?我读到了git-submodules,但这看起来很混乱,我想确定一下。非常感谢git nub。

3 个答案:

答案 0 :(得分:19)

我认为git-subtree应该有效:

git subtree push --prefix server heroku master

其他资源:

答案 1 :(得分:0)

Heroku在存储库的根目录中需要一个package.json和一个锁定文件,否则它们将导致部署失败。

但是,您可以在存储库的根目录中设置一个package.json,以安装子目录的依赖项并运行它们的相关命令。

例如,使用yarn,您可以在根中放入一个空的yarn.lock,然后像下面这样放置一个package.json

{
  "name": "my-project",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "postinstall": "yarn --cwd server --production=false install",
    "build": "yarn --cwd server serve"
  }
}

--production=false ensures that devDependencies will be installed,否则将不会发生,因为在Heroku的环境中将NODE_ENV设置为production

答案 2 :(得分:0)

或者,您可以使用 git subtree 在 GitHub 上创建 heroku 分支:

git subtree push --prefix server origin heroku

然后您可以使用 Heroku Button 将其部署到 Heroku。只需将带有按钮的 app.jsonREADME.md 添加到您的服务器目录:

[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)

Deploy

剩下的交给 Heroku。