我正在使用节点0.10.x和npm 2.15.0,我想强制排除最终安装的嵌套依赖项.
到目前为止,我已经尝试创建npm-shrinkwrap.json并手动编辑它以重新设置嵌套依赖项但是在运行rm -rf node_modules&& npm install …我仍然可以看到为以下内容构建的嵌套依赖项:
kerberos@0.0.19 install /.../node_modules/loopback-connector-mongodb/node_modules/mongodb/node_modules/kerberos
(node-gyp rebuild) || (exit 0)
CXX(target) Release/obj.target/kerberos/lib/kerberos.o
CXX(target) Release/obj.target/kerberos/lib/worker.o
CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
CC(target) Release/obj.target/kerberos/lib/base64.o
CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
SOLINK_MODULE(target) Release/kerberos.node
最佳答案 NPM团队提供了一些建议,也可能有助于此类情况.看到:
https://blog.npmjs.org/post/145724408060/dealing-with-problematic-dependencies-in-a
他们的建议实质上是分支或分叉依赖于你不想要的依赖.从你的代码片段中,我认为你想要分叉mongodb模块并删除对kerberos的依赖,并更新loopback-connector-mongodb以使用你的mongodb分支.
在分支依赖项时,对类似问题的这个答案可能会有所帮助:
https://stackoverflow.com/a/35349284/1524989
也可以将虚拟包替换为要删除的虚拟包.为此,创建一个新包(例如npm init kerberos)并更新package-lock.json(或npm-shrinkwrap.json,如果您愿意)将其替换为真正的kerberos包.