I have a Rails application using React, Webpack, and Yarn for the client side. I have everything relating to the client side within the /client directory. This includes my yarn.
You can keep both package.json and yarn.lock by adding one of these to
.slugignore.
It works like .gitignore - it just defines which files to ignore pushing to Heroku.
Check more information here
To use yarn
to install your application's dependences
a) yarn.lock
should be present in root of the repo.
yarn install
b) package-lock.json
should be removed
git rm package-lock.json
To use npm
a) yarn.lock
should be removed
Source: https://devcenter.heroku.com/articles/ruby-support#installed-binaries
https://docs.npmjs.com/files/package-lock.json
maybe your can try typing in package.json
"engines": {
"node": "^6.9",
"yarn": "^0.21"
},
I'll add an answer for document another possible use-case. I experienced something similar, multiple buildpacks and I had checked everything in all answers:
node-js
was declared first in .buildpacks
fileyarn.lock
was added in the root of the projectpackage.json
Nevertheless yarn
was not picking up since I was using an older version of node-js buildpack.
Bumping the version of the buildpack the latest solve my problem:
https://github.com/heroku/heroku-buildpack-nodejs#v118
Just been through a similar thing myself. You need to order the buildpacks so that node is first. If a yarn.lock is in your root dir (or yarn is in your "engines" key as in @remydib's answer), then the node buildpack will install yarn and then your packages. If you have a yarn.lock
in /client, put one in root, and add a postinstall
script to it that says cd client && yarn run build
.
In my case (rake assets:precompile calls yarn and fails), for some reason when the buildpacks go ruby -> node, Heroku doesn't wait for node to install before trying to run rake tasks, and we go kablooie.
Hope this helps.
Make sure to use both ruby and node buildpacks. I got this error when I didn't.
Execute these in your root folder:
heroku buildpacks:set heroku/ruby
heroku buildpacks:add --index 1 heroku/nodejs
Sources: https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app
https://github.com/shakacode/react_on_rails/blob/master/docs/additional-reading/heroku-deployment.md