如何解决Bower依赖版本冲突?


67

我有一个项目,这取决于两个:

  • jQuery的〜1.9.1
  • 另一个项目又取决于jquery> = 1.7.2

但是,当我运行时bower install,最终会安装jquery 2.0.2。这似乎坏了。

我如何(a)使其正确解决约束,或(b)明确强制安装最终版本(解决方法)?



您将在这里有2个项目-因此一个项目将获得一个jQ版本,另一个项目将获得另一个版本,因此我认为您需要在问题中提供更多细节。
2014年

您是否找到了解决此问题的解决方案,因为我遇到的问题完全相同,而neilhem的解决方案对我不起作用(例如,它没有任何区别)?
汉斯

您也许应该接受neilhem的回答?
雷米Becheras

我的工作在运行bower install jQuery#2.1.4 --save
zx1986

Answers:


114

您可以添加resolutionsbower.json文件中的对象并指定组件名称和版本,以在运行Bower命令时自动解决冲突。像这样:

{
  "name": "project-x",
  "private": true,
  "dependencies": {
    "bootstrap-sass": "~3.3.7",
    "modernizr": "~2.8.3",
    "jquery": "~1.11.3"
  },
  "devDependencies": {},
  "resolutions": {
    "jquery": "~1.11.3"
  }
}

您也可以运行bower install,当bower要求提供“合适的版本”(如果启用了交互模式)时,请在前缀选择!,以便bower将您的选择保存到bower.json文件中。


2
该解决方案对我不起作用。似乎没有什么不同。它是否需要特定版本的Bower,而我的版本却太旧了(它是从npm安装的,因此无论该版本是什么)。
汉斯

@Hans尝试更新Bower运行:npm update -g bower
Rakhat

好答案。这应该标记为正确。推杆!前面的选择特别有帮助。
Michael Cole 2015年

3
要添加到@neilhem答案:如果关闭了交互模式,bower安装程序将不会询问“合适的版本”。更多信息
Shibbir Ahmed 2015年

2
@AlonAmir npm使用嵌套的依赖树。更多内容请
参见

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.