【问题标题】:How can I forcibly exclude a nested dependency for NPM?如何强制排除 NPM 的嵌套依赖项?
【发布时间】:2016-08-13 23:30:09
【问题描述】:

我正在使用node 0.10.xnpm 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

【问题讨论】:

标签: node.js npm


【解决方案1】:

NPM 团队提供了一些建议,这些建议也可能对此类情况有所帮助。看: https://blog.npmjs.org/post/145724408060/dealing-with-problematic-dependencies-in-a

他们的建议本质上是分支或分叉那些引入你不想要的依赖的依赖。从您的代码 sn-p 中,我认为您想分叉 mongodb 模块并删除对 kerberos 的依赖并更新 loopback-connector-mongodb 以使用您的 mongodb 分叉。

在分叉依赖项时,这个类似问题的答案可能会有所帮助: https://stackoverflow.com/a/35349284/1524989

也可以用一个虚拟包代替您要删除的包。为此,请创建一个新包(例如 npm init kerberos )并更新 package-lock.json(或 npm-shrinkwrap.json,如果您愿意)以将其替换为真正的 kerberos 包。

【讨论】:

    猜你喜欢
    • 2016-01-24
    • 2014-11-02
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2012-03-29
    • 2018-06-24
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多