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

68

我有一个项目,它同时依赖于:

  • jquery ~1.9.1
  • 另一个项目依赖于 jquery >=1.7.2

但是当我运行 bower install 时,它最终安装了 jquery 2.0.2。看起来出现了问题。

我该如何(a)正确地解决这些约束条件,或者(b)明确强制安装最终版本(解决方法)?


工单:https://github.com/bower/bower/issues/540 - Sindre Sorhus
你会有两个项目 - 因此一个会得到 jQ 的一个版本,另一个会得到不同的版本,所以我认为你需要在你的问题中提供更多细节。 - landed
你解决了这个问题吗?因为我也遇到了完全相同的情况,neilhem的解决方案对我没有用(也就是说,它没有产生任何影响)。 - Hans
我的解决方法是运行 bower install jQuery#2.1.4 --save - zx1986
2个回答

114

您可以在bower.json文件中的对象中添加resolutions,并指定组件名称和版本,以便在运行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
很棒的答案。这应该标记为正确的。在选项前面加上!非常有帮助。 - Michael Cole
3
补充 @neilhem 的回答:如果关闭交互模式,bower install 不会询问“合适的版本”。更多信息 - Shibbir Ahmed
有没有类似于npm(package.json)的东西? - Alon Amir
2
@AlonAmir npm使用嵌套依赖树。更多信息请参见https://dev59.com/72Ml5IYBdhLWcg3wKkLW。 - Rakhat
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接