Sự phụ thuộc ngang hàng trong một mô-đun Node là gì?

Giải thích đơn giản về trường peerDependencies trong tệp package.json

Trong một sốpackage.jsontệp, bạn có thể thấy một vài dòng như thế này:

{
  //...
  "peerDependencies": {
    "libraryName": "1.x"
  }
}

Bạn có thể đã thấydependenciesdevDependencies, nhưng khôngpeerDependencies.

dependencieslà các gói mà dự án của bạn phụ thuộc vào.

devDependencieslà các gói cần thiết trong giai đoạn phát triển. Nói một khuôn khổ thử nghiệm nhưJesthoặc các tiện ích khác nhưBabelhoặc làESLint.

Trong cả hai trường hợp, khi bạn cài đặt một gói, các gói phụ thuộc và devDependencies được cài đặt tự động bởinpm.

peerDependencieskhác nhau. Chúng không được cài đặt tự động.

Khi một phụ thuộc được liệt kê trong một gói dưới dạng phụ thuộc ngang hàng,nó không được cài đặt tự động. Thay vào đó, mã bao gồm gói phải bao gồm nó như là phần phụ thuộc của nó.

npmsẽ cảnh báo bạn nếu bạn chạynpm installvà nó không tìm thấy sự phụ thuộc này.

Ví dụ: giả sử góiabao gồm sự phụ thuộcb:

a/package.json

{
  //...
  "dependencies": {
    "b": "1.x"
  }
}

Góibđến lượt mình muốn góicnhư một người ngang hàng

b/package.json

{
  //...
  "peerDependencies": {
    "c": "1.x"
  }
}

Trong gói A, do đó chúng ta phải thêmcnhư một phần phụ thuộc, nếu không khi bạn cài đặt góib, npm sẽ cung cấp cho bạn một cảnh báo (và mã có thể sẽ bị lỗi trong thời gian chạy):

a/package.json

{
  //...
  "dependencies": {
    "b": "1.x",
    "c": "1.x"
  }
}

Các phiên bản phải tương thích, vì vậy nếu peerDependency được liệt kê là2.x, bạn không thể cài đặt1.xhoặc phiên bản khác. Tất cả đều theo sauphiên bản ngữ nghĩa.

Tải xuống miễn phí của tôiSổ tay Node.js


Các hướng dẫn nút khác: