Managing application dependancies: top tools

Managing application dependancies can be a nightmare. Here are four tools that will make your life as a developer a whole lot easier.

Managing your application's dependencies can be painful, so it's no surprise that almost all languages have package management solutions.

Most people will have heard of NPM when it was associated with Node.js, but there are also options available to client-side JavaScript and other client-side technologies.

Here are four tools that should make your life easier.

01. Bower Bower is probably the most popular choice. This was used in the real-time analytics application, but the dependencies were checked in to simplify the getting started process. bower. json is the manifest file used to reference dependencies. One restriction is that Bower supports a flat dependency tree, so multiple versions of the same package aren't supported.

02. NPM NPM is generally referenced in assocation with Node.js packages, but the contents of a package doesn't have to be a Node.js module. NPM is seeing increased usage for client-side JavaScript when applications are built with developer tools such as Browserify.

The manifest file is package. json and NPM (along with Browserify) provides support for deep-dependency tree. This means multiple versions of the same package are supported.

03. takes a slightly different approach, based on thinking about packages as Web Components that may contain JS, HTML, CSS and so on. JavaScript should be defined and included using a CommonJS syntax. The manifest used is component.json and dependencies can be managed using the component-set command.

04. JSPM

JSPM is an entirely browser-focused solution tied to the System.JS module loading system (, which is a Universal Module Loader that means any module type can be loaded. It uses package.json and dependencies can be referenced and retrieved from JSPM or NPM.

Words: Phil Leggetter

Phil Leggetter is an expert in real-time web technologies, JavaScript, HTML5. Follow him on Twitter at @leggetter.

Like This? Read this!