你如何找出哪些 NPM 模块依赖于你的?

Posted

技术标签:

【中文标题】你如何找出哪些 NPM 模块依赖于你的?【英文标题】:How do you find out which NPM modules depend on yours? 【发布时间】:2013-09-18 18:22:27 【问题描述】:

很容易看到特定模块依赖于哪些模块,但我似乎无法找出如何查看哪些模块依赖于特定模块。有没有一种简单的方法可以做到这一点?如果是这样,有没有办法以编程方式做到这一点?

【问题讨论】:

您是在 NPM 上谈论全局,还是针对您的特定应用程序? 全球在 NPM 上。我想指定任何特定模块并确定其他模块依赖它。 【参考方案1】:

更新:注册表 API 已更改,可能会或可能不会让您直接与底层 CouchDB 数据库对话。幸运的是,在https://skimdb.npmjs.com/registry 上仍然提供了一个用于复制的公共镜像,您仍然可以向该镜像发送查询。使用方法:

https://skimdb.npmjs.com/registry/_design/app/_view/dependedUpon?group_level=3&startkey=%5B"socket.io"%5D&endkey=%5B"socket.io"%2C%7B%7D%5D&skip=0&limit=1000

为便于阅读,以下是示例中的查询字符串参数:

 group_level: 3,
  startkey: '["socket.io"]',
  endkey: '["socket.io", ]',
  skip: 0,
  limit: 1000 

请注意,如上所述,这些是 CouchDB 请求的参数。官方 API 上似乎没有用于获取此数据的端点,但注册表存在一个问题,您可以关注 here。


您最接近的可能是从 npm 注册表请求 JSON。例如,要获取依赖于 Socket.IO 的包,请向此链接发送 GET 请求:

http://registry.npmjs.org/-/_view/dependedUpon?group_level=3&startkey=%5B%22socket.io%22%5D&endkey=%5B%22socket.io%22%2C%7B%7D%5D&skip=0&limit=1000

【讨论】:

完美。谢谢你。这正是我想要的。 我无法让它与本地托管的 NPM 注册表一起使用。我回来 "error" : "no such package available" 。如果你能解释 URL 参数,或者至少链接到描述它们的 API 文档,那就太棒了。 @BenBurns 是a CouchDB query。 @Chev 有没有关于 npm 注册表 API 的文档? @caesarsol 这实际上是一个 CouchDB 查询,它支持 npm 注册表。所以CouchDB API 文档就是您所追求的。【参考方案2】:

您可以在 npmjs.com 上浏览它们,方法是转到诸如 https://www.npmjs.com/browse/depended/markdown-it 之类的 URL

【讨论】:

【参考方案3】:

最近还有 https://libraries.io/npm/socket.io 为您跟踪依赖项和依赖项。

【讨论】:

喜欢这个,因为它还跟踪 npm 没有的开发依赖关系! 太棒了。它有一个 http API。【参考方案4】:

dependedUpon 现在至少被这些工具所包裹:

npm install -g npm-static-stats dependents-tree npm-get-dependents npm-dependents

dependents-tree 看起来对于签出新包最有用

【讨论】:

以上是关于你如何找出哪些 NPM 模块依赖于你的?的主要内容,如果未能解决你的问题,请参考以下文章

如何找出特定 Boost 库需要哪些依赖项(即其他 Boost 库)?

如何识别哪些 npm 包只是对等依赖项?

如何查看给定 npm 模块的依赖树?

如何使用电子拷贝文件

npm常用命令

phantomjs:如何在phantomjs中使用npm模块?