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:
Build time for #nodejs on @heroku dropped from 2+ mins to like 10 seconds. Looks like @zeke is the guy responsible. A million thanks!
— Venkat Malladi (@mvsastry) December 4, 2013
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 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 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.
- If you're having issues that are specific to your app, file a support ticket at help.heroku.com.
- If you have build issues or ideas that are not specific to your app(s), create a GitHub issue.
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!