我想进行递归搜索,查找是否正在使用某个Node模块。这可能吗?
答案 0 :(得分:1)
如果您不打算在运行时这样做,则可以:
npm ls <module name to search for>
例如:
$ npm ls async
/Users/justin/code/example
├─┬ aws-cdk@0.19.0
│ └─┬ archiver@2.1.1
│ └── async@2.1.4 deduped
├─┬ mongooster@6.0.2
│ └─┬ mongoose@5.3.5
│ └── async@2.6.1
└─┬ sqs-consumer@3.8.0
└── async@2.1.4
在运行时,您可以使用require.resolve
> require.resolve('async')
'/Users/justin/code/example/node_modules/async/dist/async.js'
或者您可以要求模块然后在缓存中查找有关模块的详细信息,包括其父链。
> require.cache[require.resolve('async')]
Module {
id: '/Users/justin/code/example/node_modules/async/dist/async.js',
exports: { ... },
parent: Module { ... },
filename: '/Users/justin/code/example/node_modules/async/dist/async.js',
loaded: true,
children: [],
paths: [ ... ]
}