3代中解决依赖问题不同于2代。
当2代的npm使用嵌套的方式安装所有依赖,3代是试图去减缓树的深度和冗长。npm3解决方法是以平缓的方式安装这些二代依赖,也就是说最引用的依赖也安装在同样的目录中。
最主要的不同是:
想象以下,我们有一个模块A,它引用了B。
接着,我们创建一个应用引用了模块A。
使用npm install,npm3将会平缓安装模块A和模块B到node_modules目录下。 对比2代则是嵌套的结构。
接着,我们又引用了模块C,同样的模块C需要引用B,不过版本跟模块A引用的不一样。
然而这个时候,模块B的1.0版本已经是以平缓的方式安装在最顶层了,我们无法再安装2.0版本到最顶层了。npm3接下来安装2.0版本会跟npm2一样,以嵌套的方式安装到模块C的目录下。
在终端中,可能是:
我们也可以使用npm ls列举出所有的依赖,并且查看他们关系:
如果你只是想看最顶层的依赖,你可以使用:
npm ls --depth=0