给出以下几点
^3.3.1
(由于其中存在安全修复程序)。但是,它也与 jquery> = 2.2.0 兼容(但尚未在package.json
中指定)dependencies
中需要 my_library 。dependencies
中的 jquery 版本指定了建议的版本(以避免严重漏洞),但没有说明哪个 jQuery 的最低版本与 my_library 为避免 jquery 依赖项重复( outer_library 为1.7.3, my_library 为3.3.1),我可以移动 jquery ^ 3.3.1 从dependencies
到devDependencies
,因此我将获得 3.3.1 进行开发,而不会在生产环境中安装({ {1}}),仅安装 jquery 1.7.3 。
但这是
npm install --only=prod
内添加jquery@>=2.2.0
至少会引发 WARN 要求解决冲突,以便在中手动安装特定版本custom_project (即使可能无法解决)。觉得我错了,因为 jquery 是运行时peerDependencies
,不应进入dependency
(使用单元测试工具等)。实际上,在 production 上安装时, jquery 不会安装在 custom_project_2 中(因此 my_library 会中断)
我如何设法满足 my_library 的两种依赖用例?
(A)如果 outer_library 需要与我的devDependencies
定义(peerDependencies
)兼容的 jquery ,我是否可以还需要手动安装 jquery 吗?还是 npm 将解析一个通用版本?
(B)在某些情况下,>=2.0.0
不会抱怨并且不需要手动安装任何东西吗? (只要纪念会员?)
(A)是否在peerDependencies
内放置诸如 jquery (冲突的高概率)任一之类的依赖项(带有as
peerDependencies
内的和中尽可能松散 emem )。
(B)在具有 NPM 版本dependencies
(自动安装了peerDependencies)和<3
的每个设置和中,该方法都能正常工作(需要手动安装)?
对于您甚至可以回答部分问题表示赞赏
答案 0 :(得分:0)
可以安全地假设my_library对jquery的依赖是对等依赖吗?您是my_library开发团队的成员吗?
如果是这样,最好的解决方案可能是将my_library对jquery的对等依赖关系更改为常规依赖关系。如果我正确理解this article,则只有同级依赖项会在程序包之间产生冲突,将常规程序包安装到子目录中,因此my_library是安装的自己的jquery版本,与external_library分开。
但是,将对等依赖项转换为常规依赖项可能是不可能的。 https://medium.com/@jacob.h.page/common-npm-mistakes-51bf8989079f
您的模块是某个库或框架的插件吗?那么那个库/框架是对等的依赖。消费应用程序负责选择和集成一组相互兼容的插件。插件本身不应该直接引入上述框架,而应该指定一个最大包含范围的版本范围,以使集成工作尽可能容易。
您的另一个选择是等待outer_library发布与最新的jQuery兼容的新版本。