🔖

【npm】 パッケージのインストール先の確認(npm list)

2021/12/25に公開

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> したパッケージが、それぞれのバージョンで別のものとして管理されるということになります。

GitHubで編集を提案

Discussion