节点-递归搜索依赖性

时间:2018-12-31 14:19:56

标签: node.js node-modules

我想进行递归搜索,查找是否正在使用某个Node模块。这可能吗?

1 个答案:

答案 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: [ ... ]
}