/heroku-buildpack-node-cleanup

Deletes the node_modules directory and unsets $WEB_CONCURRENCY

Primary LanguageShell

Heroku Buildpack: Node Cleanup

Make the official Heroku buildpack for Node.js compatible with other buildpacks

Delete the node_modules directory

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.

Support running an app from a subdirectory

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.

Delete the nodejs.sh startup script

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.

Usage

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

Documentation

For more general information about buildpacks on Heroku: