Announcing a new and improved Node.js Buildpack

Last week we released a new version of our node buildpack that features dependency caching, faster downloads of the node binary, and support for any recent version of node. This new build process is now the default for all node apps on Heroku, so keep deploying your apps as you normally would and you should start to notice the speed improvements.

Faster Deployments

The new buildpack makes use of a build cache to store the node_modules directory between builds. This caching can mean dramatically reduced build times, particularly in cases where your modules include binary dependencies like pg, bson, or ws.

We've also shaved time off the build process by caching precompiled node binaries on our own S3-backed proxy of nodejs.org/dist.

Some observant users noticed the performance improvements right away:

More Versions of Node

Your apps can now run any recent version of Node.js on Heroku, including unstable pre-release versions. As of this writing, that includes all versions from 0.8.6 up to 0.11.9.

To automate the process of version discovery, we created semver.io, an open-source webservice that aggregates version information from nodejs.org/dist and makes it queryable by the buildpack. This eliminates the need for manual intervention each time a new version of node is released.

To see what versions of node are currently available at any given time, visit semver.io or what-is-the-latest-version-of-node.com. This information is also available on Heroku's Dev Center.

Custom Registry Support

The public npm registry has seen immense growth in recent years, and with that has come occasional instability. As a result, many node users are seeking alternatives to the public registry, either for the sake of speed and stability in the development and build cycle, or as a means to host private node modules.

As of today, you can include a .npmrc file in the root directory of your node app and the new buildpack will honor it when running npm install. The .npmrc file lets you configure npm to download modules from your own private registry, a European mirror, or otherwise.

A Cleaner Codebase

Clean, commented code is key to the success of any open-source project. A tidy codebase lowers the barrier to understanding, and increases the likelyhood of useful community contributions. With nearly 600 forks on GitHub, clean code is of paramount importance to the buildpack's future success and adoption. The new buildpack has a lighter footprint, fewer dependencies, and lots of comments.

Product Feedback

About 3 months ago, we announced the beta version of the buildpack on the new Heroku Discussion Forum, asking node developers to try the new buildpack and give feedback. The forum proved to be a great tool for collecting insight from users, and soliciting feedback in a public forum meant fewer redundant bug reports and feature requests from users.

The beta period is now over, but we'd still love to hear your thoughts.

Thank You

Thanks to all the brave hackers who tested the new buildpack on their apps, found bugs, provided useful feedback, and submitted pull requests. Here's to the future of Node.js!

Browse the blog archives or subscribe to the full-text feed.