3代npm中依赖的问题与解决方法

3代中解决依赖问题不同于2代。

当2代的npm使用嵌套的方式安装所有依赖,3代是试图去减缓树的深度和冗长。npm3解决方法是以平缓的方式安装这些二代依赖,也就是说最引用的依赖也安装在同样的目录中。

最主要的不同是:

  • 在目录结构中的位置不再可以预测依赖的类型了(比如最顶层的依赖,还是依赖中的依赖)
  • 依赖问题取决于安装的顺序,或者安装的顺序会改变node_modules目录的树结构

想象以下,我们有一个模块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


链接: https://www.fly63.com/course/21_1004