Почему обновление bower update angular не обновляется angular?
У меня есть angular 1.2.3, и я хочу перейти на 1.2.7
> cat bower.json
...
"dependencies": {
"json3": "~3.2.4",
"jquery": "~1.9.1",
"es5-shim": "~2.0.8",
"toastr": "~2.0.1",
"angular-ui-tinymce": "latest",
"underscore": "~1.5.2",
"underscore.string": "~2.3.3",
"angular-ui-utils": "~0.0.4",
"angular-dragdrop": "~1.0.5",
"angular-cookies": "~1.2.3",
"angular-animate": "~1.2.3",
"angular-resource": "~1.2.3",
"angular": "~1.2.3"
},
"devDependencies": {
"angular-mocks": "~1.2.3",
"bootstrap": "~3.0.1",
"font-awesome": "~4.0.3",
"angular-bootstrap-affix": "~0.3.0"
}
...
Я не знаю, что означает следующий вывод..., что он делает?
> bower update angular
bower angular#~1.x cached git://github.com/angular/bower-angular.git#1.2.7
bower angular#~1.x validate 1.2.7 against git://github.com/angular/bower-angular.git#~1.x
bower angular#>= 1.0.2 cached git://github.com/angular/bower-angular.git#1.2.7
bower angular#>= 1.0.2 validate 1.2.7 against git://github.com/angular/bower-angular.git#>= 1.0.2
bower angular#1.2.3 cached git://github.com/angular/bower-angular.git#1.2.3
bower angular#1.2.3 validate 1.2.3 against git://github.com/angular/bower-angular.git#1.2.3
bower angular#~1.2.3 cached git://github.com/angular/bower-angular.git#1.2.7
bower angular#~1.2.3 validate 1.2.7 against git://github.com/angular/bower-angular.git#~1.2.3
bower angular#~1.x new version for git://github.com/angular/bower-angular.git#~1.x
bower angular#~1.x resolve git://github.com/angular/bower-angular.git#~1.x
bower angular#>= 1.0.2 new version for git://github.com/angular/bower-angular.git#>= 1.0.2
bower angular#>= 1.0.2 resolve git://github.com/angular/bower-angular.git#>= 1.0.2
bower angular#~1.2.3 new version for git://github.com/angular/bower-angular.git#~1.2.3
bower angular#~1.2.3 resolve git://github.com/angular/bower-angular.git#~1.2.3
bower angular#~1.x download https://github.com/angular/bower-angular/archive/v1.2.8-build.2095+sha.28fc80b.tar.gz
bower angular#>= 1.0.2 download https://github.com/angular/bower-angular/archive/v1.2.8-build.2095+sha.28fc80b.tar.gz
bower angular#~1.2.3 download https://github.com/angular/bower-angular/archive/v1.2.8-build.2095+sha.28fc80b.tar.gz
bower angular#>= 1.0.2 extract archive.tar.gz
bower angular#>= 1.0.2 resolved git://github.com/angular/bower-angular.git#1.2.8-build.2095+sha.28fc80b
bower angular#~1.x extract archive.tar.gz
bower angular#~1.x resolved git://github.com/angular/bower-angular.git#1.2.8-build.2095+sha.28fc80b
bower angular#~1.2.3 extract archive.tar.gz
bower angular#~1.2.3 resolved git://github.com/angular/bower-angular.git#1.2.8-build.2095+sha.28fc80b
ничего не изменилось? Я все еще на 1.2.3
> git diff
diff --git a/ngapp/app/bower_components/angular/.bower.json b/ngapp/app/bower_components/angular/.bower.json
index dc9d0b6..842a1f3 100644
--- a/ngapp/app/bower_components/angular/.bower.json
+++ b/ngapp/app/bower_components/angular/.bower.json
@@ -11,6 +11,6 @@
"commit": "b112b099971f4cf016023bdeb00b267e9bf6dfb5"
},
"_source": "git://github.com/angular/bower-angular.git",
- "_target": "~1.2.3",
+ "_target": "1.2.3",
"_originalSource": "angular"
}
> bower --version
1.2.8
Я что-то пропустил?
> bower info angular
.... shows all versions including 1.2.7 and 1.2.8-builds as well
Ответы
Ответ 1
Я думаю, что ваши зависимости не позволяют вам обновлять angular изолированно. Например, посмотрите bower_components/angular-route/bower.json
. Вы увидите определенную версию angular, указанную как зависимость ( "1.2.3" ), а не ~
/ "разумно близкий" спецификатор "(" ~ 1.2.3 "). Таким образом, вы пытаетесь обновить только angular, но самая дальняя, которая может взять ваш dower angular, - это текущая версия, так как у вас есть другие пакеты, которые зависят именно от этой версии.
Если вы выполняете bower update
, тогда у bower будет возможность обновить все ваши пакеты, включая angular -route и другие пакеты, удерживающие angular назад. Обновления этих пакетов теперь позволят bower обновлять angular при удовлетворении зависимостей. Кроме того, я думаю, что если бы вы идентифицировали все эти пакеты в зависимости от конкретной версии angular (вы можете видеть зависимости с помощью bower list
) и передавали их как аргументы типа bower update angular angular-mocks angular-resource angular-route angular-sanitize...
, то bower также мог бы выполнить обновление.
Ответ 2
Я думаю, проблема в этом
"angular": "~1.2.3"
https://github.com/isaacs/node-semver/
"Reasonably close to 1.2.3".
поэтому вы должны изменить его с помощью
"angular": "1.2.7"
UPDATE:
(это в комментарии, но я думаю, что лучше указать его)
Обратите внимание, что вы не можете передать имя пакета команде обновления и обновлять только этот пакет: он все равно будет обновлять все. Вы можете получить последнюю версию одного пакета, запустив установку bower; он просто перепишет версию, которую вы в настоящее время имеете