我正在尝试做一个NPM包的本地开发,并在依赖于它的包中测试它。我正在使用NPM(7.5.3),特别是npm link
,但遇到了依赖链的问题。
子包有依赖项,当使用npm install "git+https://github.com/name/child_package"
时,这些都被添加到父包的node_modules文件夹中。但当我npm link
模块:
cd child_package
npm link
cd ../parent_package
npm link child_package
随着最后一个命令的运行(npm link child_package
),child_package
的所有依赖项都在parent_package
的node_modules中被移除。NPM报告:
1秒内删除60个包,修改1个包,审核231个包
此时,由于缺少深度,父包中的所有编译都失败。它找到了child_package,它如预期的那样是符号链接的,但是在child_package中定义的依赖项是"gsap"已被删除
如果我使用npm install "git+https://github.com/name/child_package"
重新安装它,它会将deps添加回父项目的node_modules文件夹。
尝试以下操作:
cd child_package
npm install
将子依赖项安装到子包目录
我个人讨厌npm link并且总是使用npm publish(使用1.0.0-preview这样的版本号。1为您的儿童包,并删除'-预览。当你完成时编号)
这是npm V7 +中引入的行为。
唯一合理的"变通方法"我发现是回到npm 6 (npm install -g npm@6
)。
另一个"workaround"是npm install --no-save ../../my-local-module
,但要反映对本地模块的更改,您将需要从node_modules中删除它并重新安装。有点蹩脚....