npmでなぜかホームディレクトリにパッケージがインストールされてしまう現象にハマった
npm で -g をつけなければカレントディレクトリに node_modules/ が作成されてパッケージがインストールされるのですが、なぜか常にホームディレクトリにある node_modules/ にインストールされるという状態に。
しばらく原因が分からずハマってたのですが、
- ホームディレクトリに元々 node_modules/ ディレクトリが存在していた。
- パッケージをインストールしようとしていたディレクトリが、ホームディレクトリの下層に存在していた。
- カレントディレクトリに package.json も node_modules/ が存在していなかった。
という状態だったことが原因でした。
どうやらカレントディレクトリに package.json も node_modules/ も存在しない状態で npm install を実行するとディレクトリをさかのぼって node_modules/ を探すようです。そして node_modules/ が見つかればそこにパッケージをインストールし、見つからなければカレントディレクトリに node_modules/ を作成してインストールします。
今回の場合、たまたま親ディレクトリがホームディレクトリだったので、あたかもホームディレクトリにパッケージがインストールされてしまったかのように見えていただけでした。
そもそも package.json を npm init で作成していればハマることはなかったのですが、npm install しかドキュメントに記載されていないというのはよくあるので作り忘れていました。最近は色々前提知識が必要なツールが多くて大変だ。
コメントを残す