почему Bower не обновляет 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

person Homan    schedule 09.01.2014    source источник


Ответы (2)


Я думаю, что ваши зависимости мешают вам обновлять angular отдельно. Например, посмотрите на bower_components/angular-route/bower.json. Вы увидите конкретную версию angular, указанную как зависимость ("1.2.3"), а не спецификатор ~/"разумно близкий" ("~1.2.3"). Таким образом, вы пытаетесь обновить только angular, но самое далекое, что Bower может взять с собой, — это текущая версия, поскольку у вас есть другие пакеты, которые зависят именно от этой версии.

Если вы сделаете bower update, у Bower будет возможность обновить все ваши пакеты, включая angular-route и другие пакеты, которые сдерживают angular. Обновления этих пакетов теперь позволяют Bower обновлять angular при удовлетворении зависимостей. Кроме того, я думаю, что если вы определили все эти пакеты в зависимости от конкретной версии angular (вы можете увидеть зависимости с помощью bower list) и передали их в качестве аргументов, таких как bower update angular angular-mocks angular-resource angular-route angular-sanitize..., то Bower также мог бы выполнить обновление.

person Carl G    schedule 25.08.2014

думаю проблема в этом

"angular": "~1.2.3" 

https://github.com/isaacs/node-semver/

"Reasonably close to 1.2.3". 

так что вы должны изменить его с помощью

"angular": "1.2.7" 

ОБНОВЛЕНИЕ: (это в комментарии, но я думаю, что лучше указать на это)

Обратите внимание, что вы не можете передать имя пакета команде обновления и обновить только этот отдельный пакет: он все равно обновит их все. Вы можете получить последнюю версию отдельного пакета, запустив bower install ; он просто перезапишет версию, которая у вас сейчас есть

person Whisher    schedule 09.01.2014
comment
Я не следую. Итак, мне нужно изменить Bower.json на 1.2.7? Затем установить Bower? Вы не можете обновить пакет из командной строки? - person Homan; 10.01.2014
comment
@Whistler, я думал, что ~ означает автоматическое обновление, пока текущая версия не станет 1.3. Вы можете это объяснить? спасибо! - person michael; 10.01.2014
comment
net.tutsplus .com/tutorials/tools-and-tips/ bower update Обратите внимание, что вы не можете передать имя пакета команде обновления и обновить только этот отдельный пакет: он все равно обновит их все. Вы можете получить последнюю версию отдельного пакета, запустив bower install ‹package›; он просто перезапишет текущую версию. - person Whisher; 10.01.2014
comment
Я все еще не слишком понимаю это использование. После того, как я запустил bower update, git diff показал, что папка bower_components/angular не была затронута, но Bower_components/bootstrap был полностью переработан. Итак, затем я запускаю bower install angular --save, который затем запрашивает разные версии, поэтому, наконец, я могу выбрать 1.2.7 в процессе установки, который, кажется, меняет файлы в bower_components. Итак, почему поведение непоследовательно. Когда я запустил обновление Bower, оно изменило все мои файлы начальной загрузки и ни один из моих угловых файлов. - person Homan; 10.01.2014
comment
если только вы не говорите: указание конкретных версий в bower.json блокирует пакеты для этих версий при запуске обновления Bower, а указание тильды ~ в версии позволяет обновлению Bower обновлять пакеты до ближайшей принятой версии, как описано в Bower. json ... так что ~ 3.0.1 позволяет подняться до 3.0.3, но жесткая версия 1.2.3 не приведет вас к 1.2.7 и даже не спросит вас. - person Homan; 10.01.2014