JointJS 依赖管理问题

JointJS Dependency Management Issue

我将 JointJS 用作 NPM 包,它工作正常。我的问题是管理它的依赖关系。现在,它在自己的 node_modules 文件夹中创建了自己的 jquery 文件夹。它正在使用 jQuery,但我在顶级 node_modules 文件夹中将 jQuery 作为 JointJS 旁边的 "top level" 文件夹。 如何让 JointJS 使用顶级 jQuery 以便我可以删除 JointJS 中的 jquery 文件夹?

ProjectFolder
    node_modules
        jointjs
            node_modules
                jquery (want to delete)
        jquery

简短的版本是 运行 npm dedupe 完成 npm install

之后

这将扫描您的依赖项树和 lift/point 嵌套依赖项到位于您的依赖项树顶层的依赖项 它可以

我说"where it can"是因为能够做到这一点需要你的package.json中定义的jQuery版本满足限制在 JointJS 的 package.json 中定义的 jQuery 版本。例如,JointJS requires jQuery 3.3.1 的 v2.2.1。如果您的 jQuery 版本完全偏离此 npm dedupe 将不会删除嵌套的 jQuery 依赖项。

还要记住,您应用程序中的其他包可能有它们自己的 jQuery 版本,这也可能与 jQuery 最终出现在您的顶层中的内容交互。

在某些情况下,JointJS 中的 jQuery 将保持嵌套,因为它 必须 保持嵌套以满足应用程序的所有依赖性和限制。

这个 blog post 非常有用,可以帮助我理解 npm 的依赖项解析是如何工作的,以及为什么需要 dedupe