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 (
I think git-subtree should work:
git subtree push --prefix server heroku master
Additional resources:
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.
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)
and let Heroku take care of the rest.