我使用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
之后...我仍然可以看到为以下内容构建的嵌套依赖项: / p>
{{1}}
答案 0 :(得分:2)
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程序包。