Moving forward at a breakneck pace, Node.js reached version 5.0 today. The new version includes several changes, but is also the first release to include the fruits of a reworking of the Node Package Manager.
Indeed, Node.js 5.0 comes shortly after the release of Node.js version 4.2.0, which was the most recent long-term support (LTS) edition. Version 4.2.0 first arrived in August, but achieved LTS status in October.
(Related: Node.js and io.js have merged)
That fast pace, while unpleasant for users of older versions due to breaking changes, does mean that lots of features and fixes make it into the software very quickly, however.
Perhaps the largest change in this edition comes to the Node Package Manager. NPM was updated from version 2.14.7 to 3.3.6, necessitating a changelog of its own. This, too, was a breaking change, rendering old packages incompatible with the new version.
NPM 3.3.6 includes a major change to how dependencies are handled. Instead of automatically installing all dependencies, it’s up to the user to install those properly if they are not correctly linked to within the package.
This shifts the responsibility for fulfilling peer dependencies from library and framework maintainers to application authors. Evidently, Node.js users have been having a dependency problem from conflicting peerDependency constraints, and this fix is slated to change that.
This reflects a lot of the changes in NPM; dependency coherence was a clear goal for this version. This is reflected in the shift to flat dependency installations in a project’s node_modules folder. Previously, dependencies were installed in subfolders of the projects to which they applied, leading to multiple duplicate dependencies being hidden away in the file system.
The NPM also includes a new multi-stage installer, which can ensure all packages are installed before further actions are taken. This means package installation is performed in a more predictable manner.
This led to the addition of a number of de-duplication features as well, which extend outwards from installs to Git uploads. In general, NPM is easier to use, easier to package for, and even easier to read.
Node.js 5.0 is not intended to be a long-term support release. Rather, version 6, scheduled for release next fall, will have an LTS release.