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

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

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