直到从本地文件系统安装的npm5软件包(npm install ./packages/subdir)将本地模块复制到目标的node_modules。
在v5本地安装中,只创建符号链接而不复制模块。
不幸的是,如果您的主模块和从本地文件夹安装的模块具有相同的依赖关系,则此行为会破坏npm3中引入的平面模块结构。
让我用一个例子来澄清问题:
我有三个模块,两个本地(/ home / gsanta / moduleA,/ home / gsanta / moduleB)和一个来自npm repo(例如:jquery)。
moduleA依赖于moduleB和jquery。 moduleB依赖于jquery。
现在我将moduleB安装到moduleA
中cd /home/gsanta/moduleA
npm install ../moduleB
使用npm4或更早版本,我得到以下干净的依赖树:
moduleA
moduleB
jquery
使用npm5它看起来像这样(因为moduleB只链接到moduleA而不是复制):
moduleA
moduleB
jquery
jquery
我不知道这种行为有什么样的含义,但是对于打字稿来说这显然是有问题的,因为在这种情况下,如果jquery包含一些打字稿声明文件,那些声明将被复制,使得打字稿编译器抛出错误的错误消息。