Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NPM/Bower/Composer - differences?

Can someone explain to me the difference between NPM, Bower and Composer.

They are all package managers - correct?

But when should each one be used?

Also, each one appears to have a json file that accompanies it, does this store all the packages you require so they can be installed by cmd line? Why do you need this file?

like image 887
panthro Avatar asked Apr 07 '14 16:04

panthro


People also ask

What is the difference between bower and npm?

Bower is a package manager, like npm, which manages frameworks, libraries, assets, and utilities, installs them, and makes sure they are up to date. Traditionally, many web development projects combined npm and Bower. npm was used to manage back-end dependencies, while Bower was used for front-end dependencies.

What is the difference between composer npm and yarn?

The main difference between NPM and Yarn is the package installation process. Yarn installs packages in parallel. Yarn is optimized to fetch and install multiple packages at once. NPM will perform a serial installation process.

Can I use npm instead of bower?

In almost all cases, it's more appropriate to use Browserify and npm over Bower. It is simply a better packaging solution for front-end apps than Bower is. At Spotify, we use npm to package entire web modules (html, css, js) and it works very well.


1 Answers

[update, four years later]

  • bower is deprecated, and should not be used anymore for new projects. To a large extent, it has been subsumed into node dependency management (from their website: "While Bower is maintained, we recommend using Yarn and Webpack or Parcel for front-end projects").
  • yarn came out of the wood as a better npm (fixing several of npm flaws), and this is really what you should use now, as it is the new de-facto standard if you are doing front-end or node development. It does consume the same package.json as npm, and is almost entirely compatible with it.
  • I wouldn't use composer at this point (because I wouldn't use php), although it seems to still be alive and popular

[original answer]

npm is nodejs package manager. It therefore targets nodejs environments, which usually means server-side nodejs projects or command-line projects (bower itself is a npm package). If you are going to do anything with nodejs, then you are going to use npm.

bower is a package manager that aims at (front-end) web projects. You need npm and nodejs to install bower and to execute it, though bower packages are not meant specifically for nodejs, but rather for the "browser" environment.

composer is a dependency manager that targets php projects. If you are doing something with symfony (or plain old php), this is likely the way to go

Summing it up:

  • doing node? you do npm
  • doing php? try composer
  • front-end javascript? try bower

And yes, the "json" files describe basic package information and dependencies. And yes, they are needed.

Now, what about the READMEs? :-)

  • https://github.com/bower/bower
  • https://www.npmjs.org/doc/cli/npm.html
  • https://getcomposer.org/doc/00-intro.md
like image 158
Mangled Deutz Avatar answered Dec 08 '22 13:12

Mangled Deutz