如何强制排除 NPM 的嵌套依赖项?
Posted
技术标签:
【中文标题】如何强制排除 NPM 的嵌套依赖项?【英文标题】:How can I forcibly exclude a nested dependency for NPM? 【发布时间】:2016-08-13 23:30:09 【问题描述】:我正在使用node 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 install --no-optional
,见unix.stackexchange.com/a/256960/17823
【参考方案1】:
NPM 团队提供了一些建议,这些建议也可能对此类情况有所帮助。看: https://blog.npmjs.org/post/145724408060/dealing-with-problematic-dependencies-in-a
他们的建议本质上是分支或分叉那些引入你不想要的依赖的依赖。从您的代码 sn-p 中,我认为您想分叉 mongodb 模块并删除对 kerberos 的依赖并更新 loopback-connector-mongodb 以使用您的 mongodb 分叉。
在分叉依赖项时,这个类似问题的答案可能会有所帮助: https://***.com/a/35349284/1524989
也可以用一个虚拟包代替您要删除的包。为此,请创建一个新包(例如 npm init kerberos
)并更新 package-lock.json(或 npm-shrinkwrap.json,如果您愿意)以将其替换为真正的 kerberos 包。
【讨论】:
以上是关于如何强制排除 NPM 的嵌套依赖项?的主要内容,如果未能解决你的问题,请参考以下文章