예를 들어, Grunt 플러그인이 grunt에 대한 종속성을 " 피어 종속성 " 으로 정의하는 이유는 무엇 입니까?
플러그인이 grunt-plug / node_modules 에서 자체 종속성으로 Grunt를 가질 수없는 이유는 무엇 입니까?
피어 종속성은 https://nodejs.org/en/blog/npm/peer-dependencies/에 설명되어 있습니다.
그러나 나는 그것을 정말로 얻지 못한다.
예
현재 Grunt 작업을 사용하여 소스 파일을 / dist / 폴더에 빌드하여 로컬 장치에서 제공하는 AppGyver 스테로이드와 함께 일하고 있습니다. 나는 npm에 아주 새롭고 grunt이므로 무슨 일이 일어나고 있는지 완전히 이해하고 싶습니다.
지금까지 나는 이것을 얻는다 :
[rootfolder] /package.json 은 npm grunt-steroids
에게 개발 을 위해 npm 패키지에 의존 한다고 알려줍니다 .
"devDependencies": {
"grunt-steroids": "0.x"
},
괜찮아. [rootfolder] 에서 npm install을 실행 하면 종속성을 감지하고 [rootfolder] / node_modules / grunt-steroids에 grunt-steroids를 설치 합니다.
그런 다음 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 / grunt-steroids / node_modules에 설치되어 있으며 이는 나에게 논리적입니다.
" devDependencies "가 설치되어 있지 않습니다. 확실하게 npm을 사용하여 감지하려고 시도하고 grunt-steroids
개발하지 않는 것으로 감지 됩니다.
그러나 " peerDependencies "가 있습니다.
이것들은 [rootfolder] / node_modules에 설치되어 있는데 , 다른 root 플러그인 (또는 무엇이든)과의 충돌을 피하기 위해 [rootfolder] / node_modules / grunt-steroids / node_modules에 왜 없는지 이해하지 못 합니까?
"grunt": "0.4.4"
devDependencies와 peerDependencies에 있음을 알 수 있습니다. 복제본을 갖는 것이 나에게 의미grunt
가 있습니다. 라이브러리는 peerDependencies 버전 잠금을 고려하는 한 자체 버전을 사용할 수 있습니다. 그 맞습니까? 아니면 OP 예가 매우 나쁜 예입니까?