NPM / Bower / Komposer - perbedaan?

102

Adakah yang bisa menjelaskan kepada saya perbedaan antara NPM, Bowerdan Composer.

Mereka semua adalah manajer paket - benar?

Tetapi kapan masing-masing harus digunakan?

Juga, masing-masing tampaknya memiliki file json yang menyertainya, apakah ini menyimpan semua paket yang Anda butuhkan sehingga mereka dapat diinstal oleh baris cmd? Mengapa Anda membutuhkan file ini?

panthro
sumber

Jawaban:

192

npmadalah manajer paket nodejs. Oleh karena itu, ia menargetkan lingkungan nodejs, yang biasanya berarti proyek nodejs sisi server atau proyek baris perintah (bower itu sendiri adalah paket npm). Jika Anda akan melakukan sesuatu dengan nodejs, maka Anda akan menggunakan npm.

boweradalah manajer paket yang bertujuan untuk proyek web (front-end). Anda memerlukan npm dan nodejs untuk menginstal bower dan menjalankannya, meskipun paket bower tidak dimaksudkan secara khusus untuk nodejs, melainkan untuk lingkungan "browser".

composeradalah manajer ketergantungan yang menargetkan proyek php. Jika Anda melakukan sesuatu dengan symfony (atau php biasa), ini mungkin cara yang tepat

Kesimpulannya:

  • melakukan node? Anda melakukan npm
  • melakukan php? coba komposer
  • javascript front-end? coba bower

Dan ya, file "json" menjelaskan informasi paket dasar dan dependensi. Dan ya, mereka dibutuhkan.

Sekarang, bagaimana dengan README? :-)

[perbarui, empat tahun kemudian]

  • bowertidak digunakan lagi, dan tidak boleh digunakan lagi untuk proyek baru. Untuk sebagian besar, ini telah dimasukkan ke dalam manajemen ketergantungan node (dari situs web mereka: "Meskipun Bower dipertahankan, kami merekomendasikan menggunakan Yarn dan Webpack atau Parcel untuk proyek front-end").
  • yarnkeluar dari kayu sebagai yang lebih baik npm(memperbaiki beberapa npmkekurangan), dan inilah yang harus Anda gunakan sekarang, karena ini adalah standar de-facto baru jika Anda melakukan pengembangan front-end atau node. Itu mengkonsumsi hal yang samapackage.json seperti npm, dan hampir seluruhnya kompatibel dengannya.
  • Saya tidak akan menggunakannya composerpada saat ini (karena saya tidak akan menggunakan php), meskipun tampaknya masih hidup dan populer
Hancur Deutz
sumber
6
Bagaimana dengan aplikasi php + frontent? Apa pilihan terbaiknya?
sompylasar
14
Tergantung di mana Anda menarik garis. Apakah MVC Anda dalam js (dan php Anda direduksi menjadi WS)? Maka kemungkinan menggunakan bower. Apakah MVC Anda dalam php (katakanlah, symfony), dan Anda memiliki banyak js yang terhubung ke tampilan sisi server Anda? Maka komposer kemungkinan besar adalah pilihan terbaik Anda.
Hancur Deutz
21
Bagian yang paling menjengkelkan dan kontra produktif adalah saat Anda mengerjakan perpustakaan di mana, beberapa hanya menggunakan bower; beberapa hanya menggunakan komposer dan yang lainnya hanya menggunakan npm. Akan menyenangkan untuk menemukan satu manajer paket yang dengan satu perintah menangani semua manajer paket ini. Ini harus disebut Inception.
Angel S. Moreno
29
Saya pikir @ AngelS.Moreno benar. Ada terlalu banyak mari kita buat yang keempat. :)
Eric
1
@ AngelS.Moreno Anda benar dan saya bahkan akan melangkah lebih jauh dari sekadar berhenti di penginstal dan manajer ketergantungan. Semuanya terlalu banyak. Terlalu banyak perpustakaan JS yang melakukan hal yang sama, terlalu banyak Kerangka PHP, dan sebagainya. Jika orang bisa bekerja sama dalam satu hal, itu akan mengubah hidup banyak dari kita.
JG Estiot