F.Ko-Jiの「一秒後は未来」

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 しかドキュメントに記載されていないというのはよくあるので作り忘れていました。最近は色々前提知識が必要なツールが多くて大変だ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

最近はもっぱら仕事と育児、どちらかというと育児のほうが忙しいです。もう長いことドットインストールの開発をしています。

» 詳しいプロフィールや運営サービスの一覧など