NPM / Bower / Composer - sự khác biệt?


102

Ai đó có thể giải thích cho tôi sự khác biệt giữa NPM, BowerComposer.

Họ đều là người quản lý gói - đúng không?

Nhưng khi nào nên sử dụng mỗi loại?

Ngoài ra, mỗi cái dường như có một tệp json đi kèm với nó, cái này có lưu trữ tất cả các gói bạn yêu cầu để chúng có thể được cài đặt bằng dòng cmd không? Tại sao bạn cần tệp này?

Câu trả lời:


192

npmlà trình quản lý gói nodejs. Do đó, nó nhắm mục tiêu đến các môi trường nodejs, thường có nghĩa là các dự án nodejs phía máy chủ hoặc các dự án dòng lệnh (bản thân bower là một gói npm). Nếu bạn định làm bất cứ điều gì với nodejs, thì bạn sẽ sử dụng npm.

bowerlà một trình quản lý gói nhằm vào các dự án web (front-end). Bạn cần npm và nodejs để cài đặt bower và thực thi nó, mặc dù các gói bower không dành riêng cho nodejs mà là dành cho môi trường "browser".

composerlà một trình quản lý phụ thuộc nhắm mục tiêu các dự án php. Nếu bạn đang làm gì đó với symfony (hoặc php cũ), đây có thể là cách để

Tóm lại:

  • làm nút? bạn làm lúc npm
  • làm php? thử nhà soạn nhạc
  • javascript đầu cuối? thử bower

Và có, các tệp "json" mô tả thông tin gói cơ bản và các phụ thuộc. Và có, chúng là cần thiết.

Bây giờ, những gì về READMEs? :-)

[cập nhật, bốn năm sau]

  • bowerkhông được dùng nữa và sẽ không được sử dụng nữa cho các dự án mới. Ở một mức độ lớn, nó đã được gộp chung vào quản lý phụ thuộc vào nút (từ trang web của họ: "Trong khi Bower được duy trì, chúng tôi khuyên bạn nên sử dụng Yarn và Webpack hoặc Parcel cho các dự án front-end").
  • yarnra đời như một sản phẩm tốt hơn npm(sửa một số npmlỗi) và đây thực sự là những gì bạn nên sử dụng ngay bây giờ, vì nó là tiêu chuẩn de-facto mới nếu bạn đang phát triển front-end hoặc node. Nó tiêu thụ giống package.jsonnhư npm và gần như hoàn toàn tương thích với nó.
  • Tôi sẽ không sử dụng composervào thời điểm này (vì tôi sẽ không sử dụng php), mặc dù nó có vẻ vẫn còn tồn tại và phổ biến

6
Điều gì về các ứng dụng php + frontent? Lựa chọn tốt nhất là gì?
sompylasar

14
Phụ thuộc vào nơi bạn vẽ đường. MVC của bạn có ở dạng js (và php của bạn được giảm xuống thành WS) không? Sau đó, có thể sử dụng bower. Có phải MVC của bạn bằng php (giả sử, symfony) và bạn có một loạt các j được nối vào các khung nhìn phía máy chủ của mình? Sau đó, nhà soạn nhạc có thể là lựa chọn tốt nhất của bạn.
Mangled Deutz

21
Phần khó chịu nhất và phản tác dụng là khi bạn đang làm việc trên các thư viện, nơi một số chỉ sử dụng bower; một số chỉ sử dụng trình soạn nhạc và những người khác chỉ sử dụng npm. Thật tuyệt khi tìm thấy một trình quản lý gói duy nhất mà với một lệnh duy nhất xử lý tất cả các trình quản lý gói này. Nó nên được gọi là Inception.
Angel S. Moreno,

29
Tôi nghĩ @ AngelS.Moreno đã đúng. Có quá nhiều, hãy làm cho một thứ tư. :)
Eric

1
@ AngelS.Moreno bạn nói đúng và tôi thậm chí còn muốn đi xa hơn là chỉ dừng lại ở trình cài đặt và người quản lý phụ thuộc. Có quá nhiều thứ. Quá nhiều thư viện JS hoạt động tương tự, quá nhiều PHP Framework, v.v. Nếu mọi người có thể hợp tác làm một việc, điều đó sẽ thay đổi cuộc sống của rất nhiều người trong chúng ta.
JG Estiot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.