ยกตัวอย่างเช่นทำไมปลั๊กอิน Grunt จึงกำหนดการพึ่งพา Grunt เป็น " peer dependencies "
ทำไมถึงไม่สามารถปลั๊กอินเพียงแค่มีฮึดฮัดเป็นพึ่งพาของตัวเองในแสมปลั๊ก / node_modules ?
การพึ่งพาของเพื่อนมีการอธิบายไว้ที่นี่: https://nodejs.org/en/blog/npm/peer-dependencies/
แต่ฉันไม่เข้าใจจริงๆ
ตัวอย่าง
ฉันทำงานกับ AppGyver เตียรอยด์ในขณะนี้ซึ่งใช้งาน Grunt เพื่อสร้างไฟล์ต้นฉบับของฉันลงใน / dist / โฟลเดอร์เพื่อให้บริการบนอุปกรณ์ท้องถิ่น ฉันค่อนข้างใหม่เวลา 23.00 น. และเสี้ยงฮึดฮัดแสดงความไม่พอใจดังนั้นฉันต้องการที่จะเข้าใจอย่างเต็มที่สิ่งที่เกิดขึ้น
จนถึงตอนนี้ฉันได้รับสิ่งนี้:
[rootfolder] /package.jsonบอก npm ขึ้นอยู่กับgrunt-steroids
แพ็กเกจ npm สำหรับการพัฒนา:
"devDependencies": {
"grunt-steroids": "0.x"
},
ตกลง. เล่น NPM ติดตั้งใน[RootFolder]ตรวจพบการพึ่งพาและติดตั้งฮึดฮัดเตียรอยด์ใน[RootFolder] / node_modules / ฮึดฮัดเตียรอยด์
Npm จะอ่าน[rootfolder] /node_modules/grunt-steroids/package.jsonเพื่อให้สามารถติดตั้งการgrunt-steroids
พึ่งพาของตนเองได้:
"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"
},
"การอ้างอิง " แพคเกจติดตั้งลงใน[RootFolder] / node_modules / ฮึดฮัดเตียรอยด์ / node_modulesซึ่งเป็นตรรกะสำหรับฉัน
ไม่ได้ติดตั้ง" devDependencies " ซึ่งฉันแน่ใจว่าควบคุมโดยการตรวจสอบ npm ฉันกำลังพยายามใช้grunt-steroids
และไม่พัฒนา
แต่แล้วเราก็มี " peerDependencies "
สิ่งเหล่านี้ถูกติดตั้งใน[rootfolder] / node_modulesและฉันไม่เข้าใจว่าทำไมถึงมีและไม่อยู่ใน[rootfolder] / node_modules / grunt-steroids / node_modulesเพื่อให้เกิดความขัดแย้งกับปลั๊กอินGruntอื่น ๆ (หรืออะไรก็ตาม)
"grunt": "0.4.4"
มีทั้งใน devDependencies และ peerDependencies และมันสมเหตุสมผลสำหรับฉันที่จะทำซ้ำที่นั่นเพราะมันหมายถึงทั้งสองอย่างที่ฉันต้องการgrunt
แพ็คเกจนั้นสำหรับการใช้งานของตัวเอง แต่ยังรวมถึงผู้ใช้ของฉันด้วย ไลบรารี่สามารถใช้เวอร์ชันของตนเองได้ตราบใดที่มันเคารพการล็อคเวอร์ชัน peerDependencies ถูกต้องไหม หรือตัวอย่าง OP เป็นสิ่งที่แย่มาก?