我正在尝试部署节点应用,但是我遇到了代码结构问题。该应用程序是顶层的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。
答案 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.json
和 README.md
添加到您的服务器目录:
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)
剩下的交给 Heroku。