npmモジュールはMacOS Xのどこにインストールする必要がありますか?


84

トラブルが発生し始めたとき、phonegap経由でアップグレードしようとしてnpmいました。簡単に言うと、node_modules私のコンピュータには2つのディレクトリがあります。

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules

を実行するとnpm upgrade -g phonegapnpmにあるパッケージのコピーが更新されているように見えます/usr/local/lib/node_modules。ただし、which phonegapシンボリックリンクがの古いインストールを指していることがわかった場合/usr/local/share/npm/lib/node_modules

また、などのスタンドアロンパッケージをインストールしようとするexpressと、ファイルは/usr/local/lib/node_modulesディレクトリにインストールされますが、実行可能ファイルへのシンボリックリンクがのどこにも作成されません$PATH

2つの質問:

  • Mac OS Xのノードモジュールに適切なディレクトリはどれですか?
  • ソフトウェアのインストール時にnpm実行可能ファイルをリンクするように構成するにはどうすればよい$PATHですか?

ボーナスポイント:インストール方法はnode構成に影響しますか?あります多くのオプションが


編集:私は、シンボリックリンクが私の中に作成されたことを考え出した/usr/local/binが、私は.bash_profileと設定した/usr/local/share/npm/binの先に/usr/local/bin私の中で$PATH。ある時点でそのパスをプロファイルに追加したことを漠然と覚えていますが、その理由はわかりません。

したがって、問題は次のようになります。node_modulesコンピュータ上に2つの異なるディレクトリができたのはなぜですか。またnode_modulesshare/npm/libサブディレクトリではなくサブディレクトリに自分を置きたいのはなぜ/usr/local/libですか。

回答:


117

/usr/local/lib/node_modules グローバルにインストールされたノードモジュールの正しいディレクトリです。

/usr/local/share/npm/lib/node_modules私には意味がありません。ここでの1つの問題は、node_modulesと呼ばれる2つのディレクトリがあるために混乱していることです。

/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules

後者は、ノードに付属しているノードモジュールのようです。たとえば、lodash前者がを使用してインストールしたノードモジュールの場合npmです。


1
この2つのノードの違いは何ですか?OS Xの場合、インストール時にノードからのものを使用することをお勧めします。npmの適切なインストールに移行する方が良いでしょうか?
alicia 2017年

2
MacPortsのからNPM2をインストールし、あなたのパスも不在では/ opt /ローカル/共有として、それらの場所に存在しない...
ホルムズ

71

2番目のThomasDavid Kehoe、次の警告があります-

ノードバージョンマネージャー(nvm)を使用している場合、グローバルノードモジュールは、モジュールを保存したときに使用していたノードのバージョンの下に保存されます。

だから~/.nvm/versions/node/{version}/lib/node_modules/


6
まさに私が探していたもの。
ap_snitch 2018

59
npm root -g

npm_modulesのグローバルロケーションを確認するには


6

NPMパッケージの場所を知りたい場合は、次のことを行う必要があります。

which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x  1 t04435  admin    46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

したがって、npmはそれ自体がNODEパッケージであるため、他のパッケージ(EUREKA)と同じ場所にインストールされます。したがって、確認するには、node_modulesにcdして、ディレクトリを一覧表示する必要があります。

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed

または

npm root -g

@anthonygoreのコメントによると


5
より簡単:NPMルート-g
anthonygore

1
私にとって、npm root -gそしてwhich npm同じ結果を与えませんでした。アンインストールexpo-cliしたかったのですが、からディレクトリを削除expoして成功しexpo-cliました/usr/local/bin/npm。ありがとう@ T04435!
アレクサンダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.