Một điểm quan trọng bị thiếu trong các câu trả lời khác:
Sử dụng trình quản lý gói có nghĩa là có một cấu hình cho biết bạn đang sử dụng phiên bản thư viện nào và đảm bảo rằng thông tin cấu hình thực sự chính xác.
Biết thư viện nào bạn sử dụng và phiên bản nào là rất quan trọng nếu bạn:
- cần cập nhật thư viện do lỗi nghiêm trọng / lỗ hổng bảo mật;
- hoặc chỉ cần kiểm tra xem một lỗ hổng bảo mật được công bố có ảnh hưởng đến bạn hay không.
Ngoài ra, khi bạn thực sự cập nhật, trình quản lý gói (thường) đảm bảo mọi phụ thuộc bắc cầu được cập nhật theo yêu cầu.
Trong khi với một lib
thư mục, bạn chỉ có một loạt các tệp (có thể là nhị phân và có thể sửa đổi), và bạn sẽ phải đoán chúng đến từ đâu và chúng là phiên bản nào (hoặc tin tưởng một số README, có thể đúng hoặc không chính xác ).
Để giải quyết các điểm khác của bạn:
Không cần công cụ bên ngoài để quản lý các gói.
Đúng, nhưng a) với tư cách là nhà phát triển phần mềm, dù sao bạn cũng cần cài đặt vô số công cụ, do đó, một thứ nữa thường không quan trọng và b) thường chỉ có một hoặc một vài trình quản lý gói trong bất kỳ trường nào (Maven / Gradle cho Java, npm cho JS / TypeScript, v.v.), vì vậy không giống như bạn cần cài đặt hàng tá chúng.
Không cần kết nối internet để xây dựng.
Tất cả các trình quản lý gói mà tôi biết đều hoạt động ngoại tuyến, một khi họ đã tải xuống các phụ thuộc cần thiết (có thể xảy ra ngay sau khi tải xuống dự án).
Xây dựng nhanh hơn (không kiểm tra gói).
Có thể đúng, nhưng có vẻ như việc kiểm tra gói ngoại tuyến sẽ không mất nhiều thời gian (chỉ là so sánh một số số phiên bản). Việc kiểm tra trực tuyến có thể mất một chút thời gian, nhưng có thể tắt nó nếu muốn (nếu nó được bật theo mặc định - ví dụ Maven không bao giờ kiểm tra các bản cập nhật cho các phiên bản phát hành).
Môi trường đơn giản hơn (yêu cầu ít kiến thức hơn).
Đúng, nhưng như đã giải thích ở trên, một lib
thư mục cũng đòi hỏi kiến thức. Ngoài ra, như đã giải thích ở trên, có lẽ bạn sẽ chỉ làm việc với một số ít người quản lý gói khác nhau mà bạn đã biết.