npmはどこにパッケージをインストールしますか?


977

誰かがNode.jsモジュールをどこに見つけられるか教えてもらえますかnpm


3
Linux $HOME/.npm-global/lib/node_modules
Mint

9
一人一人はせずにインストールする、知っているだけのように、-gオプションでディレクトリが言うにする場合は、ディレクトリなどの作業あなたにモジュールをインストールします~/Desktop/tmp、その後cd ~/Desktop/tmpでください、その後npm install appium、その後んlsあなたが表示されますnode_modules package-lock.json、あなたがノードモジュールをインストールしているので、appiumあなたにworking directoryので...スーパー混乱-g本質的でなければなりませんdefaultしかし、ではありません。
the_prole

2
@the_prole-ありがとう、それは非常に役に立ちました
Fattie

回答:


1142

グローバルライブラリ

実行npm list -gすると、インストールされているグローバルライブラリとそれらの場所を確認できます。npm list -g | head -1パスのみを示す切り捨てられた出力に使用します。一緒にインストールされるサブパッケージではなくメインパッケージのみを表示したい場合- npm list --depth=0すべてのパッケージを表示し、グローバルにインストールされたパッケージのみを取得するには、-g ieを追加しますnpm list -g --depth=0

Unixシステムでは、通常、グローバルにインストールされる/usr/local/lib/node/usr/local/lib/node_modules、グローバルにインストールされます。NODE_PATH環境変数をこのパスに設定すると、モジュールはノードごとに見つかります。

Windows XP- %USERPROFILE%\AppData\npm\node_modules
Windows 7、8および10-%USERPROFILE%\AppData\Roaming\npm\node_modules

非グローバルライブラリ

非グローバルライブラリは、node_modules現在のフォルダーのサブフォルダーにインストールされます。

を実行npm listして、現在の場所にインストールされている非グローバルライブラリを確認できます。

インストール時に-gオプションを使用してグローバルにインストールする

npm install -g pm2-pm2はグローバルにインストールされます。その後、通常は/usr/local/lib/node_modulesnpm root -g場所の確認に使用)にあります。

npm install pm2-pm2はローカルにインストールされます。これは通常、次のローカルディレクトリにあります。/node_modules


26
nvmを使用している場合、グローバルモジュールは、その時点で使用しているノードのバージョンに応じて、いくつかの場所のいずれかにある可能性があります。最良の方法はnpm list -g、別の回答で提案されているように使用することです。
スクリプト化不可、2014年

73
私には機能せず、binフォルダーのみが表示されます。「npm root -g」は機能します。
ホイットニーランド2015

7
Arch linuxでは、グローバルモジュールは/ usr / libにあります。"npm --help"は、正確な場所を出力の最終行として示します。例:npm@3.6.0 / usr / lib / node_modules / npm
Gregor

20
Windows 10の場合、次の場所に配置%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami 2016年

11
"npm root -g"は正しいです-リストは機能するかもしれませんが、情報が多すぎます。他のコマンドはあなたが探している正確な場所を与えるだけです。 stackoverflow.com/a/24295332/174965
Adam Tolley

581

このコマンドnpm rootは、npmパッケージの有効なインストールディレクトリを通知します。

現在の作業ディレクトリがノードパッケージまたはノードパッケージのサブディレクトリであるnpm root場合は、ローカルインストールディレクトリが表示されます。npm root -g現在の作業ディレクトリに関係なく、グローバルインストールルートが表示されます。

例:

$ npm root -g
/usr/local/lib/node_modules

ドキュメントを参照してください。


1
この回答に+1(少なくともLinux Mint 17 Qiannaおよびnpm 3.9.5の場合)。私のグローバルnode_modulesフォルダーはにあり/usr/local/lib/node_modulesます。つまり、sudo npm uninstall browserify -gsudo npm install browserify -g以前に行ったと仮定して)IEを実行すると、そこから削除されます。
nik_m 2016

10
これは、出力が多数の出力からパスを抽出せずに、より大きなコマンドを構成するのに適しているため、はるかに役立つ回答です。
Adam Tolley 2017年

2
Windows OSのデフォルトルートはC:\ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang

2
MacOS Mojave 10.14.5の場合も同様です/usr/local/lib/node_modules
Jim Aho

89

グローバルにインストールされたモジュールの場合:

他の答えはプラットフォーム固有の応答を提供しますが、一般的な答えはこれです:

を使用してグローバルモジュールをインストールするとnpm install -g something、npmは構成変数prefixを検索して、モジュールをインストールする場所を確認します。

あなたは実行することでその値を得ることができます npm config get prefix

そのフォルダーで使用可能なすべてのグローバルモジュールを表示するには、npm ls -g --depth 0depth 0それらの依存関係を表示しないために)を使用します。

あなたは、グローバルモジュールのパス、使用を変更する場合npm config editと入れprefix = /my/npm/global/modules/prefixたファイルまたは使用中npm config set prefix /my/npm/global/modules/prefix

nodistなどのツールを使用すると、グローバルnpmモジュールのプラットフォームデフォルトのインストールパスが変更されます。


2
私のフォローアップの質問に答えました:「Node.jsモジュールの場所を変更する方法を誰かに教えてもらえますか?」注:これが私にとって重要である理由は、PATHを再度変更する必要がないためです。{npm config get prefx}が開くnpmrcファイルのデフォルトの提案のコメントを外しました。
HeyZiko 2016年

「nodistなどのツールを使用すると、グローバルnpmモジュールのプラットフォームデフォルトのインストールパスが変更されます。」+1
ジム・アホ

65

npm list -gはそれを見つけるのに窓を使用しました。デフォルトでは、私の(グローバル)パッケージはにインストールされていましたC:\Users\[Username]\AppData\Roaming\npm


9
Just FYI-これは実行ユーザーの%appdata%\ npmです
Felix

19

npmがインストールした実行可能ファイルを探している場合、おそらくそれをPATHに入れたいので、簡単に行うことができます

npm bin

または

npm bin -g

nodeがhomebrewでインストールされたnpmパッケージをグローバルにインストールし、npm自体でnpmを更新した場合、command not foundエラーが発生する可能性があります。もしそうなら、あなたのPATH aboveto追加:export PATH=$PATH:$(npm bin -g)出来上がり
ヤコブ

18

以前のバージョンのNPMモジュールでは、常に/ usr / local / lib / node、または.npmrcファイル内のnpmルートを指定した場所に配置されていました。ただし、NPM 1.0+モジュールでは、2つの場所にインストールされます。/.node_modulesでアプリケーションのローカルにモジュールをインストールするか、上記を使用するグローバルにインストールすることができます。

詳細については、https://github.com/isaacs/npm/blob/master/doc/install.mdをご覧ください。


4
1.0モジュールで注意すべきことが/ usr / local / lib / node_modulesに保存されています。
ニックキャンベル、

@EricSmithあなたのリンクも壊れています
nicolimo86

16

直接的な回答ではありませんが、役立つかもしれません....

npmには、npm config get cache%AppData%/npm-cacheWindowsで)を実行して見つけることができるキャッシュフォルダーもあります。

npmモジュールは最初にここにダウンロードされ、次にnpmグローバルフォルダー(%AppData%/Roaming/npmWindowsの場合)またはプロジェクト固有のフォルダー(your-project/node_modules)にコピーされます。

したがって、npmパッケージを追跡する場合、およびいくつかの方法では、ダウンロードされたすべてのnpmパッケージのリスト(npmキャッシュがクリーンアップされていない場合)でこのフォルダーを確認できます。フォルダ構造は次のとおりです{cache}/{name}/{version}

これはhttps://docs.npmjs.com/cli/cacheにも役立ちます


14

モジュールがグローバル(-g)フラグでインストールされている場合、次のコマンドを実行して親の場所を取得できます

npm get prefix

または

npm ls -g --depth=0

インストールされたモジュールのリストとともに場所を印刷します

乾杯:-)


13

最も簡単な方法は、

npmリスト-g

パッケージを一覧表示し、それらのインストール場所を表示します。

私はchololatey経由でnpmをインストールしたので、場所は

C:\ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ tools \ node_modules

C:\ MyProgramData \はチョコレートリポジトリの場所です。



6

コマンドでグローバルにインストールされたモジュールを見つけることができます

npm list -g

node.jsモジュールがインストールされている場所を提供します。

C:\Users\[Username]\AppData\Roaming\npm

node.jsモジュールをフォルダーにローカルにインストールする場合、次のコマンドを入力して場所を確認できます。

npm list

4

ドキュメントから:

npm 1.0では、物事をインストールする2つの方法があります。

  • 世界的に-これは、内のモジュールをドロップ{prefix}/lib/node_modulesし、中プットの実行可能ファイル{prefix}/bin{prefix}通常のようなものです/usr/local。また{prefix}/share/man、manページが提供されている場合は、それらもインストール します。

  • ローカル-現在の作業ディレクトリにパッケージをインストールします。ノードモジュールが入り./node_modules、実行可能ファイルが入り ./node_modules/.bin/、マニュアルページはまったくインストールされません。

あなたは、あなたを得ることができます{prefix}npm config get prefix。(nvmでノードをインストールした場合に役立ちます)。


3

ドキュメントから:

パッケージは、プレフィックスの下のnode_modulesフォルダーにドロップされます。ローカルにインストールする場合、これはメインモジュールをロードするためにrequire( "packagename")、または他のモジュールをロードするためにrequire( "packagename / lib / path / to / sub / module")できることを意味します。

Unixシステムでのグローバルインストールは、{prefix} / lib / node_modulesに移動します。Windowsでのグローバルインストールは、{prefix} / node_modulesに移動します(つまり、libフォルダーはありません)。

スコープパッケージは同じ方法でインストールされますが、関連するnode_modulesフォルダーのサブフォルダーに@記号でスコーププレフィックスの名前が付けられてグループ化されます。たとえば、npm install @ myorg / packageはパッケージを{prefix}に配置します。 / node_modules / @ myorg / package。詳細については、スコープを参照してください。

パッケージをrequire()したい場合は、ローカルにインストールします。

あなたは、あなたを得ることができます{prefix}npm config get prefix。(nvmでノードをインストールした場合に役立ちます)。

ローカルについてお読みください。グローバル
についてお読みください。



3

私は本当の設定を探して気が狂い始めていたので、これがLinuxの設定ファイルのすべてのリストです:

  • / etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

Windowsの場合:-c / Program \ Files / nodejs / node_modules / npm / npmrc

次に、ファイルでプレフィックスが構成されます。

prefix=/usr

プレフィックスは、Linuxではデフォルトで/ usrになり、Windowsでは$ {APPDATA} \ npmになります。

ノードモジュールは$ prefixツリーの下にあり、パスには$ prefix / binが含まれている必要があります

問題がある可能性があります:

  • グローバルにインストールする場合は、「sudo su」を/root/.npmrc使用してから使用できます。
  • sudoなしでローカルで使用する場合:ユーザーの場合は/home/youruser/.npmrc
  • パスがプレフィックスを表していない場合
  • 使用するnpm set -g prefix /usrと/ etc / npmrcがグローバルに設定されますが、ローカルは上書きされません

構成されている場所を見つけるために欠落していたすべての情報を次に示します。私は徹底してきました。


2

他の答えが言うように、最善の方法は

npm list -g

ただし、多数のnpmパッケージをインストールしている場合、このコマンドの出力は非常に長くなり、上にスクロールするのが非常に困難になる場合があります(場合によっては、それより前にスクロールできないこともあります)。

この場合、このmoreようにプログラムにパイプアウトします

npm list -g | more

2

Windows 10:を実行したときにnpm prefix -g、インストール場所が、インストールに使用したgitシェルのパスの内側にあることに気付きました。その場所がパスに追加された場合でも、グローバルにインストールされたパッケージからのコマンドは認識されません。修正者:

  1. ランニング npm config edit
  2. プレフィックスを「C:\ Users \ username \ AppData \ Roaming \ npm」に変更します
  3. そのパスをシステムパス変数に追加する
  4. -gを使用してパッケージを再インストールします。

2

他の答えを拡張する-

npm list -g

グローバルにインストールされたパッケージの場所が表示されます。

そのリストをファイルに出力したい場合は、テキストエディタで簡単に検索できます。

npm list -g > ~/Desktop/npmfiles.txt



1

コードからグローバルディレクトリにアクセスしようとしている場合は、からバックトラックできますprocess.execPath。たとえば、にあるを見つけるwsproxyには、次のよう{NODE_GLOBAL_DIR}/bin/wsproxyにします。

path.join(path.dirname(process.execPath), 'wsproxy')

また、npmcliが@ ec9fcc1/lib/npm.js#L254でどのように機能するかについても説明します。

path.resolve(process.execPath, '..', '..')

ec9fcc1/lib/install.js#L521も参照してください。

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

どこglobalPrefixでデフォルトセットを持っていec9fcc1/lib/config/defaults.js#L92-L105の:

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}

これはどのように機能しますか?たとえば、Nodeバイナリはに/usr/bin/nodeありますが、明らかに(これはbinであるため)モジュールはありません。代わりににあり/usr/lib/node_modulesます。
Florian Rappl

参照して更新npmの実装
AT

これは別の話です。あなたはプラットフォーム(良い)とそれぞれのenv変数を持ち込みます(moduleNameなどの重要な関数が何をしているのかは言及していませんが、平均的な読者は推測できると思います)。修正・訂正ありがとうございます!
Florian Rappl

1

Visual Studioがインストールされている場合は、ノードを自分でインストールしたときにパス上にあるものとは別の独自のノードのコピーが付属していることがわかります-鉱山はC:\ Program Files(x86)\ Microsoft Visual Studio \ 2019にあります\ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs。

このディレクトリ内からnpmコマンドを実行すると、Visual Studio内にインストールされているノードモジュールがわかります。


0

Windows 7、8、10-%USERPROFILE%\ AppData \ Roaming \ npm \ node_modules。

注:ディレクトリに移動するcd ..までフォルダタイプのどこかにいる場合C:。次に、と入力しcd %USERPROFILE%\AppData\Roaming\npm\node_modulesます。そして、魔法のように%USERPROFILE%に変わりUsers\YourUserProfile\ます。Decko最初の回答で言及されたアイデアを明確にしたかっただけです。npm list -gグローバルにインストールされたすべてのビットがリストされます。関連するプロジェクトを見つける必要がある場合npm packagecd 'your angular project xyz'、を実行しnpm listます。にモジュールのリストが表示されnpm packageます。また、dependencies不足しているもののリストも表示され、そのプロジェクトを効果的に実行する必要がある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.