Heroku deploy a sub directory?

孤街醉人 提交于 2021-01-20 17:50:08

问题


I'm trying to deploy a node app, but I'm running into a problem with how my code is structure. The app is git inited at the top level and it looks like:

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

Since Heroku needs me to push only the server directory directly with the package.json build file, I'm not sure how to setup my directory. I want it such that I can deploy heroku from the 'App/server' folder, but still git pull/push the entire app as I do now:

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

How I can achieve this the simplest? I read about git-submodules, but that seems messy and I wanted to be sure. Thank you very much from a git nub.


回答1:


I think git-subtree should work:

git subtree push --prefix server heroku master

Additional resources:

  • How can I deploy/push only a subdirectory of my git repo to Heroku?
  • https://coderwall.com/p/ssxp5q



回答2:


Heroku requires a package.json and a lockfile in the root of the repository or they will fail the deploy.

However you can set up a package.json in the root of the repo which installs dependencies for the subdirectories and runs their related commands.

Using yarn for example, in your case you could put an empty yarn.lock in the root and a package.json like:

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

The --production=false ensures that devDependencies will be installed, which otherwise wouldn't happen since NODE_ENV is set to production in Heroku's environment.




回答3:


Alternatively, you can use git subtree to create a heroku branch on GitHub:

git subtree push --prefix server origin heroku

which you can then deploy to Heroku using a Heroku Button. Just add an app.json and a README.md with the button to your server directory:

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

Deploy

and let Heroku take care of the rest.



来源:https://stackoverflow.com/questions/26241683/heroku-deploy-a-sub-directory

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!