https://github.com/ranyitz/qnm
node_modules配下のパッケージを検索してくれるツール。
npm ls
よりちょっとリッチな感じかも。
fuzzy search
qnmコマンドでスタート。
qnm
❯ angula
❯ @angular/cdk
@angular/cli
@angular/core
@angular/fire
@angular/forms
@angular/router
...
大文字小文字を区別しない。
qnm
❯ anGuLAR
❯ @angular/cli
@angular/cdk
@angular/core
@angular/fire
@angular/forms
list
--deps
を付けると、該当パッケージの依存元がわかる。
qnm list --deps
@babel/runtime
└── 7.18.9
@babel/template
├── 7.18.10
├─┬ @babel/helper-function-name
│ └── 7.21.9
├─┬ @babel/helper-module-transforms
│ └── 7.21.9
├─┬ @babel/helper-replace-supers
│ └── 7.21.9
├─┬ @babel/helpers
│ └── 7.21.9
└─┬ @babel/plugin-transform-computed-properties
└── 7.21.9
package-lock.json を見ると helper-function-name が確かに依存している。
794 "node_modules/@babel/helper-function-name": {
795 "version": "7.21.0",
796 "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
797 "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
798 "dev": true,
799 "dependencies": {
800 "@babel/template": "^7.20.7",
801 "@babel/types": "^7.21.0"
802 },
lodash は依存元がなかった。
lodash
└── 4.17.21
package-lock.json を見ると inquirer が依存している。 依存の深いネストは表示されない?
6631 "node_modules/inquirer": {
6632 "version": "8.2.4",
6633 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz",
6634 "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==",
6635 "dev": true,
6636 "dependencies": {
6637 "ansi-escapes": "^4.2.1",
6638 "chalk": "^4.1.1",
6639 "cli-cursor": "^3.1.0",
6640 "cli-width": "^3.0.0",
6641 "external-editor": "^3.0.3",
6642 "figures": "^3.0.0",
6643 "lodash": "^4.17.21",
関係あるか分からないけど babel/template は大元の babel の requires に列挙されている。
12407 "@babel/core": {
12408 "version": "7.18.10",
12409 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz",
12410 "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==",
12411 "dev": true,
12412 "requires": {
12413 "@ampproject/remapping": "^2.1.0",
12414 "@babel/code-frame": "^7.18.6",
12415 "@babel/generator": "^7.18.10",
12416 "@babel/helper-compilation-targets": "^7.18.9",
12417 "@babel/helper-module-transforms": "^7.18.9",
12418 "@babel/helpers": "^7.18.9",
12419 "@babel/parser": "^7.18.10",
12420 "@babel/template": "^7.18.10",
12421 "@babel/traverse": "^7.18.10",
12422 "@babel/types": "^7.18.10",
12423 "convert-source-map": "^1.7.0",
12424 "debug": "^4.1.0",
12425 "gensync": "^1.0.0-beta.2",
12426 "json5": "^2.2.1",
12427 "semver": "^6.3.0"
12428 },
12429 "dependencies": {
12430 "semver": {
12431 "version": "6.3.0",
12432 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
12433 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
12434 "dev": true
12435 }
12436 }
package-lock.json の dependencies と requires
- requires: package.json の依存を反映したもの。
- dependencies: 実際にインストールされたもの。
パッケージ X と Y がそれぞれ Z の異なるバージョンを要求する時、Z の複数バージョンがインストールされる。 このような時に要求される依存と実際のインストールが異なる。
node_modules
/X
/Y
/node_modules
/Z@2.0
/Z@1.0
https://stackoverflow.com/questions/52926922/package-lock-json-requires-vs-dependencies
その他
Angular + Scully では qnm list
が実行できなかった。
そもそも依存パッケージが古いのでアップデートしてまた試す。
nvmには対応していない様子。グローバル node_modules は読み込んでくれなかった。惜しい。