你如何找出哪些 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 模块依赖于你的?的主要内容,如果未能解决你的问题,请参考以下文章