たとえば、Gruntプラグインがgrunt への依存関係を「ピア依存関係」として定義するのはなぜですか?
なぜプラグインはgrunt-plug / node_modulesの独自の依存関係としてGruntを使用できないのですか?
ピアの依存関係については、https://nodejs.org/en/blog/npm/peer-dependencies/で説明しています。
しかし、私は本当にそれを理解していません。
例
現在、Gruntタスクを使用してソースファイルを/ dist /フォルダーにビルドし、ローカルデバイスで提供されるAppGyver Steroidsを使用しています。私はnpmとうなり声で非常に新しいので、何が起こっているのかを完全に理解したいと思います。
これまでのところ私はこれを得ます:
[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にインストールされていますが、他のgruntプラグイン(または何でも)との競合が回避されるように、[rootfolder] / node_modules / grunt-steroids / node_modulesにないのはなぜですか?
"grunt": "0.4.4"
devDependenciesとpeerDependenciesの両方にあることがわかります。そこに複製があることは私にとって理にかなっていgrunt
ます。これは、自分が使用するためにそのパッケージが必要であるだけでなく、私のユーザーもライブラリは、peerDependenciesバージョンロックを尊重する限り、独自のバージョンを使用できます。あれは正しいですか?または、OPの例は非常に悪い例ですか?