我(自己(刚刚发现,NPM不像我过去使用的其他包管理系统那样工作。我对事情的基本理解是,我的每个依赖项也将有自己的node_modules
文件夹和自己的依赖项(而且,对于更新版本的npm,第二个node_modules
文件夹只有在版本冲突时才会创建(
这看起来很整洁,但我想知道npm是如何处理sub-sub的依赖冲突。我很抱歉没有更好地掌握语言——但我的意思是。
我想在我的项目中安装@foo/bar
的3.0版本。
第二个软件包——我们称之为@second/package
——我想要安装@foo/bar
的2.0版本。
我现在明白了NPM是如何做到这一点的。@second/package
将拥有自己的node_modules
文件夹,@foo/bar
版本为2.0
./node_modules/@foo/bar # version 3.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0
然而——
我还想安装@zip/zap
的8.0版本。
但是@second/package
想要安装@zip/zap
的7.0版本。
@foo/bar
的2.0版想要安装@zip/zap
的6.0版
./node_modules/@foo/bar # version 3.0
./node_modules/@zip/zap # version 8.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0
./node_modules/@second/package/node_modules/@zip/zip # version 7.0
# where does version 6.0 of @zip/zap go?
@zip/zap
的6.0版本最终会出现在哪里?npm是创建一个第三级node_module
文件夹,还是放弃并表示无法解决此依赖树?还是第三件事?还是我对npm的理解仍然有缺陷?
在我想办法用假软件包建立自己的npm存储库来测试之前,我想最好问问。
NPM,令我惊讶的是,做了正确的事情并继续嵌套子依赖关系。即问题的答案
@zip/zap的6.0版本在哪里?
是
./node_modules/@second/package/node_modules/@foo/bar/node_modules/@zip/zap