Javascript 我如何阅读npm项目的源代码,该项目具有节点\单元模块的平面依赖关系?

Javascript 我如何阅读npm项目的源代码,该项目具有节点\单元模块的平面依赖关系?,javascript,node.js,npm,Javascript,Node.js,Npm,在npm将其依赖项文件结构从nested更改为flat之前,我可以很容易地向下钻取依赖项树,阅读项目依赖项的源代码和依赖项的依赖项,从而对项目有深入的了解 然而,如今在项目的根节点(modules)模块(modules)中存在数千个依赖项,因此无法理解和浏览项目的真正依赖项结构 如果你想深入了解一个开源项目,你现在如何浏览项目依赖关系树?有了NPM命令行,你可以使用NPM ls来输出依赖关系图树 纱线命令行有一个很好的功能用于此类调查:warn why 请参阅此处的文档: 以下是一个示例输出:

在npm将其依赖项文件结构从
nested
更改为
flat
之前,我可以很容易地向下钻取依赖项树,阅读项目依赖项的源代码和依赖项的依赖项,从而对项目有深入的了解

然而,如今在项目的根
节点(modules
)模块(modules)中存在数千个依赖项,因此无法理解和浏览项目的真正依赖项结构


如果你想深入了解一个开源项目,你现在如何浏览项目依赖关系树?

有了NPM命令行,你可以使用
NPM ls
来输出依赖关系图树

纱线命令行有一个很好的功能用于此类调查:
warn why

请参阅此处的文档:

以下是一个示例输出:

yarn why doctrine
yarn why v1.7.0
[1/4] Why do we have the module "doctrine"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "doctrine@2.1.0"
info Has been hoisted to "doctrine"
info Reasons this module exists
   - Hoisted from "eslint-plugin-react#doctrine"
   - Hoisted from "eslint#doctrine"
   - Hoisted from "@storybook#react#babel-plugin-react-docgen#react-docgen#doctrine"
=> Found "eslint-plugin-import#doctrine@1.5.0"
info This module exists because "eslint-plugin-import" depends on it.
Done in 0.91s.

通过查看每个模块中的package.json?我就是这么做的,但我对“更好的方式”很感兴趣™@JaromandaX package.json只能告诉您模块的直接依赖关系,如果您想深入了解,这是没有帮助的:(你必须跟着兔子进入兔子洞:p@JaromandaX但是在NPM V3之前,我们不需要任何兔子来探索兔子洞的所有级别。考虑在这个系统上安装NPM 2。对于我理解的<代码>纱线,为什么使用< /代码>来从一个底部到顶部获得一个深嵌套包的依赖链,直到根项目。然而,我想要的是从上到下探索项目依赖关系树及其源代码。@benjamin你是对的。实际上,在webstorm中按住CTRL键并单击效果很好。再加上“从源代码滚动”功能可能会满足您的需要。my webstorm在索引节点模块时反应非常迟钝,几乎无法使用。您是否也经历过同样的情况?是的,我们通常将节点模块排除在索引之外。但这并不妨碍CTRL+CLICK的工作。可能这取决于项目配置(es6/babel/等)。