由于NPM版本3节点模块和依赖项都安装在同一根级别。但是,如果我安装两个依赖于同一模块的两个不同版本的模块呢?例如,如果我安装了异步npm i async@2.1.4
,requires lodash version 4.14.0,那么我安装自己npm i yo@1.8.5
,requires lodash version version 3.2.0,npm如何解决这个冲突?
答案 0 :(得分:11)
Npm有一篇很棒的博客文章文档页面
<击> https://docs.npmjs.com/how-npm-works/npm3 击>
http://npm.github.io/how-npm-works-docs/npm3/how-npm3-works.html
答案 1 :(得分:4)
所有依赖项和内部依赖项都试图在node_modules
的根目录中占有一席之地,除非与相同的依赖项但版本不同时发生冲突。 发生冲突时,它将在所需的每个依赖项下创建一个子node_modules
,并将冲突的内部库推送到其中。
示例: 在此,“ A”内部取决于“ alpha@v1.0”,“ B”取决于“ alpha@v2.0”。 当您执行安装A和B时,如下所示:
npm install A
npm install B
node_modules
|_ A
|_ alpha @v1.0
|_ B
| |_ node_modules
| |_ alpha @v2.0
|_ ...
注意:在主node_module中的“ B”下创建的另一个node_modules
。
有关更多详细信息:visit this post。