npm list
npm list
によってパッケージのインストール先の確認をすることができます。
ローカルインストールの場合
# ローカルインストールされたパッケージの確認
$ npm list --depth=0
グローバルインストールの場合
# グローバルインストール先の確認
$ npm list -g | head -1
# グローバルインストールされたパッケージの確認
$ npm list -g --depth=0
実行例
ローカルインストールの場合
# typescript のインストール
$ npm install typescript
+ typescript@4.0.3
# node_modules に typescript のパッケージが存在していることの確認
$ ls node_modules
typescript
# ローカルインストールされたパッケージの確認
$ npm list --depth=0
typescript-node-base@1.0.0 /Users/sugurutakahashi/git/typescript-node-base
└── typescript@4.0.3
# node_modules のない適当なディレクトリに移動
$ cd ../
$ ls node_modules
標準出力なし(= node_modules が空)
# ローカルインストールされたパッケージの確認
$ npm list --depth=0
/Users/sugurutakahashi/git
└── (empty)
このようにローカルインストールされたパッケージはカレントディレクトリの node_modules の内容を確認していることがわかります。
グローバルインストールの場合
# (前提その1)nodebrew で複数のバージョンの Node.js のバージョンを管理している状態(v14.13.1 を使用)
$ nodebrew ls
v12.6.0
v14.13.1
current: v14.13.1
# グローバルインストール先の確認(npm list -g | head -1)
$ npm list -g | head -1
/Users/sugurutakahashi/.nodebrew/node/v14.13.1/lib
# グローバルインストールされたパッケージの確認(npm list -g --depth=0)
$ npm list -g --depth=0
/Users/sugurutakahashi/.nodebrew/node/v14.13.1/lib
├── npm@6.14.8
├── typescript@4.0.3
└── yarn@1.22.10
# v12.6.0 に切り替え
$ nodebrew use v12.6.0
$ nodebrew ls
v12.6.0
v14.13.1
current: v12.6.0
# グローバルインストール先の確認
$ npm list -g | head -1
/Users/sugurutakahashi/.nodebrew/node/v12.6.0/lib
# グローバルインストールされたパッケージの確認
$ npm list -g --depth=0
/Users/sugurutakahashi/.nodebrew/node/v12.6.0/lib
├── @vue/cli@4.4.6
├── @vue/cli-service-global@4.4.6
├── express@4.17.1
├── firebase-tools@8.6.0
├── gatsby-cli@2.12.66
├── gitbook-cli@2.3.2
├── multi-file-swagger@2.3.0
├── npm@6.14.8
└── yarn@1.22.10
このように Node.js のバージョンを切り替えるとグローバルインストールされたパッケージの内容が異なることがわかります。
つまり、グローバルインストールしても nodebrew
などで複数の Node.js のバージョンを管理している場合は、npm install -g <package>
したパッケージが、それぞれのバージョンで別のものとして管理されるということになります。