NuGet vs. NPM vs. Bower

Many of us .NET developers have spent the majority of our lives living in the cozy NuGet Package Manager bubble.  With the release of Visual Studio 2015 and NET5 we, Microsoft Devs, are introduced to 2 new package managers that really show how the love is shifting to the client side. Don’t worry NuGet fans, these new package mangers wont replace Nuget, instead they will provided exciting new support to the font end of our web applications.

Now, each of these package managers are designed with specific needs in mind and they each handle specific tasks better than the others.  Because of their different strengths, it is common to use all three of them within the same .Net web application.

NuGet

What is it?   .Net developers are likely to be very familiar with this.  It is a package manager that mainly deals with .NET assemblies.

What it is good for?  It is nicely integrated within Visual Studio and great for loading .Net assemblies and libraries such as Entity Framework and ASP.NET Identity.

NPM (Node Package Manager)

What is it?  Designed specifically for node modules, but is also ideal for loading packages that are used during development time. Unlike Bower, NPM supports nested dependency trees. Meaning, NPM may actually load multiple versions of a component on your machine.

What it is good for?  Great for managing developer tools like Yeoman, Grunt, Gulp, and testing tools. Its nested dependency tree makes it great for avoiding dependency conflicts.

Bower

What is it?   Bower is optimized for front-end components. Bower uses a flat dependency tree, requiring only one version for each package, reducing page load to a minimum. So where NPM aims for stability, bower aims for a smaller/faster footprint.

What it is good for?  Created specifically for managing front-end components like javascript and css files.

 

Advertisements

One thought on “NuGet vs. NPM vs. Bower

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s