npmのpeerDependencies requirementsエラーの直し方
npmで毎回ハマっている気がするのでメモです。
npmを使ってpackage.jsonで利用モジュールの管理をしていると、たまに何もしていないのにnpm installでエラーが発生し始めます。
エラー
エラーはこんな感じ。
npm ERR! Linux 3.14.48-33.39.amzn1.x86_64
npm ERR! argv "/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node0.12.7/bin/node" "/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node0.12.7/bin/npm" "install"
npm ERR! node v0.12.7
npm ERR! npm v2.11.3
npm ERR! code EPEERINVALID
npm ERR! peerinvalid The package tslint does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer grunt-tslint@2.5.0 wants tslint@>=2.5.0-beta
npm ERR! Please include the following file with any support request:
npm ERR! /var/jenkins_home/jobs/anime-lineup-packaging/workspace/npm-debug.log
peerDependencies requirementsと言っていて、ここだけみると訳がわからない。
原因
上記のエラーの場合、原因は簡単で、peerDependencies requirementsの1行下にそのまま出ています。
grunt-tslintが2.5.0がtslint 2.5.0-beta以上を要求しているけど、実際はそうなっていないことが問題です。今回はgrunt-tslintでしたが、これはもちろん人によって違うと思います。
解決方法
上記の場合依存moduleであるtslintを2.5.0-beta以上にしてあげれば良いです。つまりpackage.jsonを修正すればOKです。
簡単ですね。簡単なのになぜかハマってしまったという・・・。
簡単に依存性を上げたい
davidというnode moduleを使いましょう。
npm install -g david david
これでpackage.jsonに書いてあるmoduleたちのversionが古いかどうか調べてくれます。
自動でpackage.jsonを書き換えて最新versionにしたいのであれば
david update
これだけです。
詳しくはこちらの記事のdavidの項目を御覧ください。
それでは快適なnpm生活をお送りください。(これで問題解決しなかったらごめんなさい!)