Ví dụ, tại sao một plugin Grunt xác định sự phụ thuộc của nó vào grunt là " phụ thuộc ngang hàng "?
Tại sao plugin không thể có Grunt làm phụ thuộc riêng của nó trong grunt-plug / node_modules ?
Phụ thuộc ngang hàng được mô tả ở đây: https://nodejs.org/en/blog/npm/peer-dependencies/
Nhưng tôi không thực sự hiểu nó.
Thí dụ
Tôi đang làm việc với AppGyver Steroids tại thời điểm này sử dụng các tác vụ Grunt để xây dựng các tệp nguồn của tôi thành một thư mục / dist / để được phục vụ trên một thiết bị cục bộ. Tôi khá mới ở npm và grunt vì vậy tôi muốn hiểu đầy đủ những gì đang diễn ra.
Cho đến nay tôi nhận được điều này:
[rootfolder] /package.json nói với npm, nó phụ thuộc vào grunt-steroids
gói npm để phát triển:
"devDependencies": {
"grunt-steroids": "0.x"
},
Được chứ. Chạy cài đặt npm trong [rootfolder] phát hiện sự phụ thuộc và cài đặt grunt-steroid trong [rootfolder] / node_modules / grunt-steroids .
Npm sau đó đọc [rootfolder] /node_modules/grunt-steroids/package.json để nó có thể cài đặt các grunt-steroids
phụ thuộc riêng :.
"devDependencies": {
"grunt-contrib-nodeunit": "0.3.0",
"grunt": "0.4.4"
},
"dependencies": {
"wrench": "1.5.4",
"chalk": "0.3.0",
"xml2js": "0.4.1",
"lodash": "2.4.1"
},
"peerDependencies": {
"grunt": "0.4.4",
"grunt-contrib-copy": "0.5.0",
"grunt-contrib-clean": "0.5.0",
"grunt-contrib-concat": "0.4.0",
"grunt-contrib-coffee": "0.10.1",
"grunt-contrib-sass": "0.7.3",
"grunt-extend-config": "0.9.2"
},
Các gói " phụ thuộc " được cài đặt vào [rootfolder] / node_modules / grunt-steroids / node_modules , điều này hợp lý với tôi.
" DevDependencies " chưa được cài đặt, mà tôi chắc chắn được kiểm soát bởi npm phát hiện tôi chỉ đang cố gắng sử dụng grunt-steroids
và không phát triển trên đó.
Nhưng sau đó chúng ta có "đồng đẳng ".
Chúng được cài đặt trong [rootfolder] / node_modules và tôi không hiểu tại sao không có [rootfolder] / node_modules / grunt-steroids / node_modules để tránh xung đột với các plugin khác (hoặc bất cứ điều gì)?
"grunt": "0.4.4"
cả về devDependencies và peDependencies, và nó có ý nghĩa với tôi để có một bản sao ở đó, bởi vì nó có nghĩa là tôi cầngrunt
gói đó cho mục đích sử dụng của riêng tôi, nhưng cũng là người dùng của tôi thư viện có thể sử dụng phiên bản của riêng họ, miễn là nó tôn trọng khóa phiên bản ngang hàng. Đúng không? Hoặc là ví dụ OP là một ví dụ rất xấu?