有什么npm包可以分析项目package.json的依赖关系吗?

项目是基于npmv3+,webpack的,我想知道项目中的第三方包依赖关系,比如A包依赖了B,B依赖了C,C依赖了D,然后node_modules突然会多出一个D,我想知道这个D是由哪个依赖进来的。

最好是基于webpack的,因为有一些语法,比如 import, require.ensure 有一些是不识别的。

阅读 7.7k
1 个回答

可以使用 webpack --profile --json > stats.json 生成打包的统计分析文件,包含一些构建和模块依赖的信息,然后上传到这个网站 http://webpack.github.io/anal... 进行分析。

这边以分析 react 依赖 object-assgin 为例。

假设 node_module 有 object-assgin,但我们不知道是由于 react 依赖的,我们使用 webpack 生成统计分析文件,然后上传到 http://webpack.github.io/anal... 后可以看到类似下面的界面

图片描述

点击上图的 modules 链接,进入模块页面,如下所示

图片描述

上图中的那个网状图代表模块见的相互依赖关系,每个节点是个模块,下面的列表是每一个模块的信息,我们需要在列表中找到 obejct-assgin,如下所示

图片描述

在上图点击 object-assign 的模块 id —— 绿色的按钮 4,进入 object-assgin 模块的明细信息页面,如下所示

图片描述

在 object-assign 模块信息页面中找到 issuer(发起者),这个就是有第一个出现依赖 object-assgin 的模块,这里是 react。再往下面看 reasons 就是所有有依赖 object-assgin 的模块,如下所示:

图片描述

点击 react 可以去分析 react 的模块信息啦

图片描述

参考 Show your modules tree

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题