首页 > 解决方案 > 为什么本地安装的项目的 node_modules 文件夹与全局安装的项目之间存在差异?

问题描述

假设我有一个具有依赖项的项目,A.

A有自己的依赖关系B

如果我npm install A进入我的项目,我的node_modules文件夹如下所示。请注意,B已作为顶级模块安装:

/myproject
    /node_modules
        /A
        /B

然后,如果我要依赖myprojectfrom anotherproject,我的node_modules文件夹如下所示:

/anotherproject
    /node_modules
        /myproject
        /A
        /B

但是,如果我要安装myproject为全局模块npm install -g myproject,该node_modules文件夹最终看起来像这样(没有顶级B):

/myproject
    /node_modules
        /A

为什么是这样?

(npm 6.14.4}

标签: javascriptnode.jsnpmnode-modules

解决方案


发生这种情况是因为当您安装lib A到项目中时,A它将作为依赖项保存在您的项目package.json中,并且内部A´s拥有作为依赖项,它package.jsonB将被安装但不会保存到您的package.json. 当您将项目本地导入另一个项目时,所有模块都会检查它们的依赖关系,因此也会添加BA依赖关系中。B但是,当您运行命令进行全局安装时,只会package.json验证(不检查依赖项的依赖关系),然后B不会添加。


推荐阅读