Make the official Heroku buildpack for Node.js compatible with other buildpacks
The maximum allowed Heroku slug size (after compression) is 300MB. Image-heavy apps can somethings butt up against this limit, especially when using multiple buildpacks. If you're using Node.js to compile your front-end assets, but not to run your app, you may be able to save a large amount of space by deleting the node_modules
directory before slug compilation.
Set the NPM_PREFIX
environment variable to the relative path of the subdirectory that contains the node_modules
directory that you'd like to delete.
There is currently an incompatibility between the Node.js and other buildpacks. On dyno boot, the nodejs.sh
startup script sets the WEB_CONCURRENCY
variable. The launch scripts of subsequent buildpacks will pick this us with no way of knowing that it wasn't set by a user.
First, set the Node.js buildpack to compile your assets:
$ heroku buildpacks:set heroku/nodejs
Next, add the Node Cleanup buildpack to get rid of the node_modules
directory:
$ heroku buildpacks:set --index 1 https://github.com/josephabrahams/heroku-buildpack-node-cleanup
Finally, add whichever buildpack runs your app:
$ heroku buildpacks:set --index 2 heroku/python
For more general information about buildpacks on Heroku: