也许我不懂SemVer语法或者我不懂bower(我的版本是1.4.1),但我有一个 bower.json 的应用程序:
{
"name": "MyApp",
"description": "My AngularJS Project....",
"version": "0.0.0",
"homepage": "https://github.com/angular/angular-seed",
"license": "MIT",
"private": true,
"dependencies": {
"angular": "1.3.x",
"angular-route": "1.3.x",
"angular-loader": "1.3.x",
"angular-mocks": "~1.3.x",
"angular-ui-grid": "~3.0.0-rc.20",
"angular-spinkit": "~0.3.3",
"angular-bootstrap": "0.13.0",
"bootstrap": "3.3.4",
"angular-animate": "~1.3.x",
"file-saver.js": "~1.20150507.2"
},
"resolutions": {
}
}**
当我执行' bower update '时,它“无法找到合适的角度版本”,但我不明白为什么不这样做。这是输出(#1似乎是问题):
Unable to find a suitable version for angular, please choose one:
1) angular#>=1.2.16 <=1.3.x which resolved to 1.2.28 and is required by angular-ui-grid#3.0.0-rc.22
2) angular#1.3.16 which resolved to 1.3.16 and is required by angular-animate#1.3.16, angular-loader#1.3.16, angular-mocks#1.3.16, angular-route#1.3.16
3) angular#1.3.x which resolved to 1.3.16 and is required by MyApp
4) angular#>=1.3.0 which resolved to 1.3.16 and is required by angular-bootstrap#0.13.0
5) angular#* which resolved to 1.3.16 and is required by angular-spinkit#0.3.3
所以我对该输出的阅读是所有软件包都会对版本1.3.16的角度感到满意,除了 angular-ui-grid (“已解析为1.2.28”)但为什么呢?不是1.3.16&gt; = 1.2.16&lt; = 1.3.x?那么Angular的1.3.16版本不是合适的版本吗?它不是唯一合适的版本吗?或者我可能误解了凉亭试图告诉我的事情。
我明白我可以选择其中一个选项甚至添加'!'坚持我的选择,但我不明白为什么需要选择。
由于
答案 0 :(得分:0)
c0bra - 感谢你设置了那个plunker - 它帮助我轻松验证了我的信念(经过大量挖掘后)确定的问题是:
旧版本的semver.js中似乎存在一个错误 - 我向下,向下,向下追溯到代码中,&lt; = 1.3.x变为&lt; = 1.3.0-0,这意味着1.3.16未通过该测试。
但是这个错误已经在NPM提供的semver模块中得到修复 - 我能够使用你的plunker向我自己证明1.3.16通过'最新'的semver代码通过测试,就像你设置它一样,但是当我切换到较旧版本的semver时失败(例如“^ 2.3.0”,这似乎是bower包在其packages.json中所需要的)。
但即使是github上最新的bower也似乎对semver有^ 2.3.0依赖。所以我会看看我是否可以向任何维护凉亭的人提交升级请求。但是我最近没有看到很多关于bower / github的活动。
与此同时,我想我被迫回答上面的问题,因为我正在使用NPM来获得凉亭,我认为我不能轻易地覆盖它的semver依赖。