Đối với người đọc nhanh : QA này là về trường package.json BundledDependencies, không phải về gói .
Các gói phụ thuộc làm gì
"BundledDependencies" chính xác như tên gọi của chúng. Sự phụ thuộc nên có bên trong dự án của bạn. Vì vậy, chức năng về cơ bản giống như các phụ thuộc bình thường. Chúng cũng sẽ được đóng gói khi chạy npm pack
.
Khi nào sử dụng chúng
Các phần phụ thuộc thông thường thường được cài đặt từ sổ đăng ký npm. Do đó, các gói phụ thuộc hữu ích khi:
- bạn muốn sử dụng lại thư viện của bên thứ ba không đến từ sổ đăng ký npm hoặc đã được sửa đổi
- bạn muốn sử dụng lại các dự án của riêng mình dưới dạng mô-đun
- bạn muốn phân phối một số tệp với mô-đun của mình
Bằng cách này, bạn không phải tạo (và duy trì) kho lưu trữ npm của riêng mình, nhưng nhận được những lợi ích tương tự mà bạn nhận được từ các gói npm.
Khi nào không nên sử dụng các gói phụ thuộc
Mặc dù vậy, khi phát triển, tôi không nghĩ rằng điểm chính là ngăn các cập nhật ngẫu nhiên. Chúng tôi có các công cụ tốt hơn cho việc đó, cụ thể là kho lưu trữ mã (git, evalurial, svn ...) hoặc bây giờ là khóa tệp.
Để ghim các phiên bản gói của bạn, bạn có thể sử dụng:
Tùy chọn 1: Sử dụng phiên bản NPM 5 mới hơn đi kèm với nút 8. Nó sử dụng một package-lock.json
tệp (xem blog của nút và bản phát hành nút 8)
Lựa chọn 2: sử dụng sợi thay vì npm
. Nó là một trình quản lý gói từ facebook, nhanh hơn npm
và nó sử dụng một yarn.lock
tệp. Nó sử dụng cùng một package.json
cách khác.
Điều này có thể so sánh với các tệp khóa trong các trình quản lý gói khác như Bundler hoặc Cargo. Nó tương tự như npm-cowrap.json của npm, tuy nhiên nó không mất mát và nó tạo ra kết quả có thể tái tạo.
npm
thực sự đã sao chép tính năng đó từ yarn
, trong số những thứ khác.
- Tùy chọn 3: đây là cách tiếp cận được đề xuất trước đây, mà tôi không khuyên dùng nữa. Ý tưởng là sử dụng
npm shrinkwrap
hầu hết thời gian và đôi khi đưa toàn bộ, bao gồm cả thư mục node_module, vào kho lưu trữ mã của bạn. Hoặc có thể sử dụng gói thu nhỏ . Các phương pháp hay nhất vào thời điểm đó đã được thảo luận trên blog node.js và trên các trang web của nhà phát triển vui vẻ .
Xem thêm
Điều này hơi nằm ngoài phạm vi của câu hỏi, nhưng tôi muốn đề cập đến loại phụ thuộc cuối cùng (mà tôi biết): phụ thuộc ngang hàng . Cũng thấy điều này câu hỏi SO có liên quan và có thể là tài liệu của yarn
trên bundledDependencies .